包引用的问题

jiugui 2013-10-31 12:56:55
我在新建了一个类 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)
但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事,本人新人一个,请见谅!!
...全文
368 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiugui 2013-11-07
  • 打赏
  • 举报
回复
我在系统变量下增加了“classpath” ,将我包所放文件夹的父文件夹路径添加进去,就可以了。
forgetsam 2013-11-01
  • 打赏
  • 举报
回复
引用 5 楼 jiugui 的回复:
[quote=引用 1 楼 huxiweng 的回复:] 但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事, 不然你的程序找不到啊。package其实和路劲是对应的。你的package是com.xxx那最终的路径会是/com/xxx
是的,我把包文件夹放在程序的目录下就可以了。可我在系统的环境变量里将我的目录 d:\java 添加到path中后,将两文件分开存放还是不能运行。不是说添加了path后系统会寻找调用对应路径的文件的吗?[/quote] path是用来找exe的
老鼠尼奥 2013-11-01
  • 打赏
  • 举报
回复
A.Trangle包路径:four.six.Trangle
B.Example4_8包路径:Example4_8

所以,要么
1.把Trangle.class打包成jar文件(放到与Example4_8)同一目录,运行如下:


2.在Example4_8里增加:package three;
3.直接把 four/six/Trangle.class复制到three目录下
因为你运行 Example4_8的时候,程序会在如下路径加载类
<当前路径>/four/six/Trangle.class
就可以了!
teemai 2013-10-31
  • 打赏
  • 举报
回复
但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事, 不然你的程序找不到啊。package其实和路劲是对应的。你的package是com.xxx那最终的路径会是/com/xxx
道乡 2013-10-31
  • 打赏
  • 举报
回复
是calsspath,系统会根据路径去寻找.class文件
jiugui 2013-10-31
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
但如果我把两个放在同一个目录下就能正常运行,请问这是怎么回事, 不然你的程序找不到啊。package其实和路劲是对应的。你的package是com.xxx那最终的路径会是/com/xxx
是的,我把包文件夹放在程序的目录下就可以了。可我在系统的环境变量里将我的目录 d:\java 添加到path中后,将两文件分开存放还是不能运行。不是说添加了path后系统会寻找调用对应路径的文件的吗?
道乡 2013-10-31
  • 打赏
  • 举报
回复
应该是因为没找到class文件吧。修改claapath的值,在classpath中加上d:\java\four\six;应该就可以了
tony4geek 2013-10-31
  • 打赏
  • 举报
回复
路径找不到对应的class
失落夏天 2013-10-31
  • 打赏
  • 举报
回复
其实java编译的都是class文件。。
确保你class文件的在你导入的包的位置就行了

java.lang.NoClassDefFoundError: four4/Example4_8
这就是告诉你去four4目录下没找到相应class的意思。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧