gpt4 book ai didi

java - 如何在 Java 包中查找/执行文件?

转载 作者:行者123 更新时间:2023-12-04 05:52:20 24 4
gpt4 key购买 nike

我正在尝试学习如何在 Java 中制作和使用包。我已经尝试了以下“Hello World”程序

class helloWorld
{
public static void main (String[] args)
{
System.out.println("Hello World");
}
}

当我在它的主目录中编译并运行这个程序时,一切都很好。但是,当我创建一个子目录 - ./testPackage 并将以下文件(hiEarth.java)放入其中时:
package testPackage;

class hiEarth
{
public static void main (String[] args)
{
System.out.println("Hi Earth");
}
}

我似乎可以编译它,但不能运行它。
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ javac hiEarth.java 

me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ java hiEarth

Exception in thread "main" java.lang.NoClassDefFoundError: hiEarth (wrong name: testPackage/hiEarth)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: hiEarth. Program will exit.

当我做一个' ls ',我看到了我希望看到的:
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ ls

hiEarth.class hiEarth.java

为什么我不能让java看到当前目录中的类?

当我在上面移动一个目录时:
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ cd ..

me@ubuntu:~/Projects/JavaProjects/helloWorld$ java testPackage/hiEarth

一切正常。我认为这可能是类路径问题,但是
me@ubuntu:~/Projects/JavaProjects/helloWorld/testPackage$ java -cp . hiEarth

也不起作用。我在这里不明白什么?

谢谢....

最佳答案

转到 ~/Projects/JavaProjects/helloWorld/并键入

java -cp . testPackage.hiEarth

当您执行 java 命令时,您需要提供您要执行的 Java 类的完全限定名称(即,这里是 testPackage.hiEarth)。类的查找将与您在类路径参数中提供的目录和 jar 相关。因此,寻找 testPackage.hiEarth 将导致在这种情况下进入 ./testPackage/hiEarth.class 如果相对于 ~/Projects/JavaProjects/helloWorld/它将起作用

注意:使用 Java 命名约定并为您的类使用大写字母。

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

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