我是java的新手。我正在通过Ubuntu终端运行java程序 我刚开始java包主题并且已经处理了几个小时的问题。 我试图创建一个名为pack的简单包,它包含单个类Hello。 我创建了一个目录包。在包中我通过
将Hello.class文件放在intp包目录中javac -d ./pack Hello.java
命令。 然后我将pack包包含在一个包含main方法的类中。该类的名称是test,它位于test.java文件中该类位于另一个目录中。我通过
编译javac -cp ./pack test.java
它编译时没有任何错误,一切正常。 但是,当我输入命令
java -cp ./pack test
它给了我
Error: Could not find or load main class test
当我尝试
时java test
命令。出现以下消息
Exception in thread "main" java.lang.NoClassDefFoundError: pack/Hello
at test.main(test.java:6)
Caused by: java.lang.ClassNotFoundException: pack.Hello
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
任何人都能解释一下我做错了什么吗?非常感谢任何帮助。
抱歉,我做的机器人包括我的源代码。他们在这里。
import pack.Hello;
public class test
{
public static void main(String args[])
{
Hello.HelloMessage();
}
}
这是test.java文件,它测试一切是否正常。它位于
/home/uesername/apps
。目录
然后我创建了" pack"目录。包目录的完整路径是
home/username/apps/pack
在" pack"我把Hello.java文件。 Hello.java文件的内容是
package pack;
public class Hello
{
public static void HelloMessage()
{
System.out.println("hello, world");
}
}
答案 0 :(得分:2)
首先,我建议您使用IDE设置环境以进行编译,运行和调试。
您遇到的问题是您使用错误的路径进行编译。
javac -cp . pack/Hello.java
javac -cp . pack/test.java
和
java -cp . pack.Hello
或
java -cp . pack.test
问题是您在目录pack
中编译了包pack
的类,最终会得到
pack/pack/Hello.class
我建议您检查Hello.class文件的放置位置。