gpt4 book ai didi

java - 从命令行运行 Eclipse 项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:04 24 4
gpt4 key购买 nike

关于从命令行编译和运行 Eclipse java 项目,我有两个问题。当我刚从 eclipse IDE 运行时,这工作正常。我尝试使用谷歌搜索,但无法真正使它正常工作。任何帮助深表感谢。

问题 1:当我尝试从不同于 .java 文件所在目录的位置进行编译时,它会抛出错误“无法读取:myfile.java”。但是如果我迁移到这个目录然后它编译。<​​br/>我给出的命令是(在其他目录中时):
javac -cp C:\ABC\src\XYZ myfile.java
我在 XYZ 目录中给出的命令:
javac myfile.java
这生成了两个 .class 文件 myfile.class 和 Testing_Thread.class(我猜这是因为我的代码中有一个线程)

问题 2:通过转到其目录进行编译后,当我尝试运行该程序时,出现错误“线程“主”java.lang.NoClassDefFoundError 中的异常:myfile(错误名称:XYZ/myfile.java)”,即使我试图从 XYZ 目录运行。当我尝试从其他地方运行时,我也遇到了同样的错误。
我在 XYZ 目录中给出的命令:
java myfile
我在其他地方给出的命令:
java -cp C:\ABC\src\XYZ 我的文件

如果有任何帮助,我还附加了我的目录结构的层次结构:
enter image description here

最佳答案

这些示例采用以下源结构:

C:\temp\compile-test\src\a\b\c\D.java

D.java 在哪里:

package a.b.c;

public class D { }

第一个问题,cannot read: myfile.java,是因为使用cp命令行选项指向不正确到您的源代码。

C:\temp\compile-test\src>javac -cp c:\temp\compile-test\src\a\b\c D.java
javac: file not found: D.java
Usage: javac <options> <source files>
use -help for a list of possible options

这应该是以下内容,其中 javac 从您的源文件夹运行,我们可以使用源文件的相对路径(注意 - javac 从运行源文件夹在这里):

C:\temp\compile-test\src>javac a\b\c\D.java

或者这样,我们指定源文件的完整路径,并且 javac 可以从任何地方运行(注意 - javacC:\ 这里):

C:\>javac temp\compile-test\src\a\b\c\D.java

以上两个选项都会导致您的类文件在与源文件相同的文件夹中创建。即:

C:\temp\compile-test\src\a\b\c\D.class

对于第二个问题,如果您尝试运行一个具有来自包“内部”的包名称的类,这将导致名称错误(注意 - java 从 '在此处的包裹内):

C:\temp\compile-test\src\a\b\c>java D
Exception in thread "main" java.lang.NoClassDefFoundError: D (wrong name: a/b/c/D)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: D. Program will exit.

要运行 D 类,您应该在包“root”中,并提供 Fully Qualified Class Name .即:

C:\temp\compile-test\src>java a.b.c.D
Exception in thread "main" java.lang.NoSuchMethodError: main

请注意,我得到一个异常,因为 D 类没有 main 方法,因此无法运行。为了解决这个问题,我们添加了一个主要方法:

package a.b.c;

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

并重新运行:

C:\temp\compile-test\src>java a.b.c.D
main

关于java - 从命令行运行 Eclipse 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494109/

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