Java包运行时错误

时间:2016-03-23 09:01:46

标签: java package

我是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");
    }
}

1 个答案:

答案 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文件的放置位置。