2016-02-13 64 views
0

我的主文件夹是ABC里面有2个文件夹命名为classes和src,里面src是2个文件夹命名为objectFile和testFile,里面objectFile是ABC.java,而testFile里面是TestABC.java。(里面类是相同的,但替代的.class)现在ABC包含Java错误包不存在

package objectFile; 
public class ABC 
private int something; 

而TestABC.java包含

package testFile; 
import objectFile.ABC; 

public class TestABC 

错误TestABC.java:2说:错误:包objectFile不存在

import objectFile.ABC;

+0

这应该工作。你如何编写你的课程?你使用的IDE(如NetBeans或eclipse)?尝试清理你的项目(删除_.class_文件),并重新编译(编译)它。 –

+0

不使用CMD(必需),试图清理它们,但仍然没有工作 – WaterMokou

回答

1

您是不是指定sourcepath?这告诉编译器在哪里找到它需要导入的类。

javac -sourcepath src -d classes src\testFile\TestABC.java 

注意,这个编译不仅仅是TestABC.java,但ABC.java以及(因为你import语句)。

然后,您可以把班级到归档使用jar命令:

jar cfe myJavaArchive.jar testFile/TestABC -C classes . 

这将Ç reate新的JAR与˚F ilename myJavaArchive.jarË ntrypoint testFile/TestABC目录中的所有文件制成。

因为它是入口点,TestABC必须有一个main方法,例如,

package testFile; 

import objectFile.ABC; 

public class TestABC { 

    public static void main(String[] args) { 
     ABC abc1 = new ABC(1); 
     ABC abc2 = new ABC(2); 

     System.out.println("abc1.i is " + abc1.getI()); 
     System.out.println("abc2.i is " + abc2.getI()); 
    } 
} 

package objectFile; 

public class ABC { 

    private int i; 

    public ABC(int i) { 
     this.i = i; 
    } 

    public int getI() { 
     return i; 
    } 
} 

然后你可以使用java -jar命令执行代码:

java -jar myJavaArchive.jar 
+0

我照你说的那样做了,它工作我编译成类,但是当我运行jar文件,它说找不到或加载时出现问题主类 – WaterMokou

+0

我已经添加了关于如何在创建jar时指定入口点的说明。 –