gpt4 book ai didi

java - 如何在包中运行 Java 类?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:02 25 4
gpt4 key购买 nike

我有两个java类如下

App1 没有包:

class App1 {
public static void main(String[] args) {
System.out.println("App1 hello world...");
}
}

App2 在一个包中:

package java.java.package1;    
class App2 {
public static void main(String[] args) {
System.out.println("App2 hello world...");
}
}

我可以编译它们:

D:\javaTest>javac App1.java

D:\javaTest>javac App2.java

但是,我只能运行第一个:

D:\javaTest>java App1
App1 hello world...

D:\javaTest>java java.java.package1.App2

Exception in thread "main" java.lang.NoClassDefFoundError: java/java/package1/App2
Caused by: java.lang.ClassNotFoundException: java.java.package1.App2
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: java.java.package1.App2. Program will exit.

如何运行 App2

最佳答案

如果将放在与包名称匹配的适当目录层次结构中 (D:\javaTest\java\java\package1\App1.java),然后编译/从层次结构的根 (D:\javaTest) 运行,你不会有这个问题:

D:\javaTest>javac java\java\package1\App1.java

D:\javaTest>java java.java.package1.App1
App2 hello world...

您还可以使用 -d 选项进行编译,以便将类移动到这样的目录层次结构中:

javac -d . App2.java
java java.java.package1.App2

请注意,您不应使用以java 开头的程序包名称,JDK 的更高版本将抛出SecurityException。参见 this question获取更多信息。

关于java - 如何在包中运行 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11032590/

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