Java 将类添加到包中
我正在学习java软件包。我成功创建了一个包含单个.class文件Hello.class的包包。现在我想在同一个包中添加另一个类文件。我将新的java类命名为bye.java,并通过 指挥部。bin目录包含包目录。 包含主函数的I compile test.java文件Java 将类添加到包中,java,packages,Java,Packages,我正在学习java软件包。我成功创建了一个包含单个.class文件Hello.class的包包。现在我想在同一个包中添加另一个类文件。我将新的java类命名为bye.java,并通过 指挥部。bin目录包含包目录。 包含主函数的I compile test.java文件 javac -cp ./bin test.java 指挥部。编辑工作做得很好。但是当我进去的时候 java test 指挥部。我明白了 Hello, world Exception in thread "main" jav
javac -cp ./bin test.java
指挥部。编辑工作做得很好。但是当我进去的时候
java test
指挥部。我明白了
Hello, world
Exception in thread "main" java.lang.NoClassDefFoundError: pack/Goodbye
at test.main(test.java:9)
Caused by: java.lang.ClassNotFoundException: pack.Goodbye
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
有人能解释我在这件事上做错了什么吗?我正在ubuntu 14.04上工作,在终端上做所有的事情
Hello.java和再见.java文件都位于
/home/username/apps/src
目录。相应的类文件在里面
/home/username/apps/bin/pack
目录。包目录是由创建的
javac -d ./bin
指挥部。
Hello.java文件的内容
package pack;
public class Hello
{
public static void HelloMessage()
{
System.out.println("hello, world");
}
}
它工作正常。对于其相应的类,将加载文件
java文件的内容是
package pack;
public class Goodbye
{
public static void message()
{
System.out.println("bye");
}
}
导入包的test.java文件位于/home/username/apps目录。它有以下几行代码
import pack.*;
public class test
{
public static void main(String args[])
{
Hello.HelloMessage();
Goodbye.message();
}
}
非常感谢您的帮助。我对您的类文件的理解如下:
/home/username/apps/bin
|
+-- pack
| |
| +--- Hello.class
| |
| +--- Goodbye.class
|
+-- test.class
然后转到/home/username/apps/bin
并拨打
java -cp . test
使用-cp
可以添加当前目录以搜索类。这应该始终是包的根。然后参考你的主要课程
顺便说一句:根据标准,类名应该以大写字母开头,比如Test
更新:更新了类文件位置。您需要设置两个位置的类路径,因为类文件位于两个不同的位置:
java -cp .;./bin test
但是为什么不使用IDE呢?这将使你的工作更容易。我有C++背景,并已习惯了终端。我不喜欢未知原因的IDE,我想,想知道它在命令行中是如何工作的是件好事。这使我们在最后有了更深的理解,即使以后专门使用IDE。不,test是一个单独的.java文件,它位于上面一个目录中。我错误地理解了文件夹结构。我还编写了javac而不是java命令。我看到的问题是,所有必需的类都不在类路径中。使用java命令的-cp选项指定所有类的路径。
java -cp .;./bin test