2

我在 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)

其他一些帖子说这可能是一个类路径问题,但我真的不明白该怎么做。我在这里做错了什么?

4

3 回答 3

1

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

java -cp averageAmpCov/src averageAmpCov

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

于 2013-10-10T17:51:12.540 回答
0

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

  1. 您使用主类的完全限定类名。
  2. 主类应该在类路径中。

可以通过 3 种方式设置类路径:

  1. 它可以在环境变量中设置CLASSPATH
  2. -cp使用将覆盖的选项CLASSPATH
  3. 如果两者都不使用,则当前目录是类路径。

注意如果文件的结构如下:

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
于 2013-10-10T17:55:58.117 回答
-2

运行这个很好

java averageAmpCov/src/averageAmpCov

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

于 2013-10-10T17:50:55.233 回答