包引用的问题
我在新建了一个类 Trangle 用来计算三角形面积及判断是否为三角形的。
package four.six;
public class Trangle
{
double sideA,sideB,sideC;
boolean boo;
public Trangle(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
if(a+b>c&&a+c>b&&b+c>a)
{
System.out.println("我是一个三角形");
boo=true;
}
else
{
System.out.println("我不是一个三角形");
boo=false;
}
}
public void 计算面积()
{
if(boo==true)
{
double p=(sideA+sideB+sideC)/2.0;
double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
System.out.println("面积是:" + area);
}
else
{
System.out.println("不是一个三角形,不能计算面积");
}
}
public void 修改三边(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
if(a+b>c&&a+c>b&&b+c>a)
{
boo=true;
}
else
{
boo=false;
}
}
}
存放在d:\java\four\six下
再用import引入这个包
import four.six.*;
class Example4_8
{
public static void main (String args[])
{
Trangle trangle=new Trangle(12,3,1);
trangle.计算面积();
trangle.修改三边(3,4,5);
trangle.计算面积();
}
}
存放在d:\java\three下
最后编译能通过,但运行是出错,提示是:
Exception in thread "main"
java.lang.NoClassDefFoundError: four4/Example4_8 (wro
ng name: Example4_8)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事,本人新人一个,请见谅!!
------解决方案--------------------但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事,
不然你的程序找不到啊。package其实和路劲是对应的。你的package是com.xxx那最终的路径会是/com/xxx
------解决方案--------------------应该是因为没找到class文件吧。修改claapath的值,在classpath中加上d:\java\four\six;应该就可以了