运行命令行Eclipse项目(Run Eclipse project from command li

2019-07-29 07:37发布

我有关于编译和运行命令行一个Eclipse Java项目两个问题。 当我刚刚从Eclipse IDE中运行时,此工作正常。 我试着用搜索引擎,但不能真正得到的东西的工作。 任何帮助深表感谢。

问题1:当我尝试从其中的.java文件,它引发错误的目录不同的位置编译“ 看不懂:myfile.java”。 但是,如果我迁移到这个目录,然后它编译。
我正在给他的命令是(在其他目录时):
的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命令C:\ ABC \ SRC \ XYZ MYFILE

我还附上我的目录结构的层次结构,如果它是有帮助:

Answer 1:

这些示例假设下面的源结构:

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

其中D.java是:

package a.b.c;

public class D { }

第一个问题, 看不懂: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可以在任何地方运行(注- javac是从运行C:\这里):

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类,你应该在包装“根”,并提供了完整的类名 。 即:

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

注意:我得到一个异常的D类没有一个主要方法,因此不能运行。 要解决,我们添加了一个主要的方法:

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


文章来源: Run Eclipse project from command line