首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

包引用的有关问题

2013-11-08 
包引用的问题我在新建了一个类 Trangle 用来计算三角形面积及判断是否为三角形的。package four.sixpublic

包引用的问题
    我在新建了一个类 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;应该就可以了


[解决办法]
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
就可以了!

热点排行