java编译命令行

时间:2013-10-10 17:48:28

标签: java command-line intellij-idea

我在Intellij IDEA中写了一个程序。它在IDE中运行良好,但我从命令行遇到问题(我很少从命令行运行我自己,我认为我只是错过了一步。)所以这就是问题所在。 如果我导航到我的文件所在的位置:

cd averageAmpCov/src/

然后运行我的程序它工作正常:

java averageAmpCov

Error: Parameter 'out' is required.
Error: Parameter 'in' is required.
Usage: java averageAmpCov
       (-o|--outputlocation) <out> (-i|--inputlocation) <in>

  (-o|--outputlocation) <out>
        Where is the input file to be put? Full path and desired file name

  (-i|--inputlocation) <in>

但是当我尝试从文件夹外部运行时:

java averageAmpCov/src/averageAmpCov

我收到一个可悲的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: averageAmpCov/src/averageAmpCov (wrong name: averageAmpCov)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

其他一些帖子说它可能是一个类路径问题,但我并不真正理解该怎么做。我在这做错了什么?

3 个答案:

答案 0 :(得分:1)

尝试在类文件夹外运行程序时,请将类路径设置为.class文件所在的目录:

java -cp averageAmpCov/src averageAmpCov

现在你不会得到NoClassDefFoundError。类路径是Java查找要加载和运行的.class文件的地方。类名参数必须是实际的类名,不涉及任何目录。

答案 1 :(得分:0)

要正确使用java,您应该确保:

  1. 您使用主类的完全限定类名。
  2. 主类应该在类路径中。
  3. 可以通过3种方式设置类路径:

    1. 可以在环境变量CLASSPATH中设置。
    2. 选项-cp会覆盖CLASSPATH
    3. 如果您不同时使用,则当前目录是类路径。
    4. 注意,如果文件的结构如下:

      bin -
           |
           com -
               |
               mypackage -
                         |
                         Hello.class
      

      Hello的包名称为com.mypackage,然后以下命令应该有效:

      java -cp C:\projects\myprojct\bin com.mypackage.Hello
      

      或者,您可以cdC:\projects\myprojct\bin并使用:

      java com.mypackage.Hello
      

答案 2 :(得分:-2)

运行此功能

java averageAmpCov / src / averageAmpCov

但我猜你忘了先设置你的类路径设置类路径