我可以从 Eclipse 创建的命令行程序运行吗?

2022-09-01 13:36:57

使用Eclipse,我创建了一个SWT Hello World程序。我能够从Eclipse运行这个程序,它工作正常。

在“/home/myname/workspace/HelloWorldSWT”中,我发现了两个文件:HelloWorldSWT.java和HelloWorldSWT.class。我想从命令行执行相应的程序。首先,我尝试键入“java HelloWorld”,并收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
   at gnu.java.lang.MainThread.run(libgcj.so.90)
Caused by: java.lang.ClassNotFoundException: HelloWorld not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.90)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at gnu.java.lang.MainThread.run(libgcj.so.90)

我也尝试了这个“java -cp /home/roman/workspace/ HelloWorld.HelloWorld”。结果我收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: loaded class HelloWorld.HelloWorld was in fact named HelloWorld
   at java.lang.VMClassLoader.defineClass(libgcj.so.90)
   at java.lang.ClassLoader.defineClass(libgcj.so.90)
   at java.security.SecureClassLoader.defineClass(libgcj.so.90)
   at java.net.URLClassLoader.findClass(libgcj.so.90)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at gnu.java.lang.MainThread.run(libgcj.so.90)

有谁知道我做错了什么?提前感谢您的任何帮助。


答案 1

转到“调试”透视图,然后选择刚运行的程序(其中显示“已终止”、“退出值...”)。在“调试”选项卡中)右键单击,然后选择“属性”,在那里您可以看到由eclipse启动的整个命令行命令。

您可以在 eclipse 所做的同一目录中运行相同的命令(请参阅运行配置、参数、工作目录中),它将起作用。


答案 2

您必须在类路径中添加 eclipse 存储 HelloWorldSWT.class 文件的目录。它是在创建项目时定义的,例如“bin”,“build”或“classes”。检查项目属性或搜索 HelloWorldSWT.class 文件。

假设它是 HelloWorldSWT 工作区内的目录,并且您的类不在其中(默认包)中,则该命令应为:build

java -cp /home/roman/workspace/HelloWorldSWT/build HelloWorldSWT

或者只是切换到该目录并使用:

java -cp . HelloWorldSWT

编辑:
这意味着仅使用实际目录来查找类文件。您还必须添加程序使用的所有库(JAR 或其他目录)(databse、SWT 等)。
有关更多详细信息,您可以查看文档:如何找到类设置类路径java comand-cp .


推荐