gpt4 book ai didi

java - 将类添加到包中

转载 作者:行者123 更新时间:2023-11-30 10:47:24 26 4
gpt4 key购买 nike

我正在研究java包。我成功地创建了一个包含单个 .class 文件 Hello.class 的包。现在我想在同一个包中添加另一个类文件。我将新的 java 类命名为 Goodbye.java 并通过

将其编译到同一目录“pack”中
javac -d ./bin Goodbye.java

命令。 bin 目录包含 pack 目录。我通过

编译包含main函数的test.java文件
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 和 Goodbye.java 文件都位于

/home/username/apps/src 

目录。里面有对应的类文件

/home/username/apps/bin/pack

目录。 pack 目录由

创建
javac -d ./bin 

命令。Hello.java 文件的内容

package pack;
public class Hello
{
public static void HelloMessage()
{
System.out.println("hello, world");
}
}

它工作正常。加载其对应的类文件Goodbye.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 可以添加当前目录来搜索类。这应该始终是您的包的根目录。然后引用你的主类。

顺便说一句:根据 Java naming conventions , 类名应该以大写字母开头,比如 Test

更新:更新了类文件位置。

关于java - 将类添加到包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com