我在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)
其他一些帖子说它可能是一个类路径问题,但我并不真正理解该怎么做。我在这做错了什么?
答案 0 :(得分:1)
尝试在类文件夹外运行程序时,请将类路径设置为.class文件所在的目录:
java -cp averageAmpCov/src averageAmpCov
现在你不会得到NoClassDefFoundError
。类路径是Java查找要加载和运行的.class文件的地方。类名参数必须是实际的类名,不涉及任何目录。
答案 1 :(得分:0)
要正确使用java
,您应该确保:
可以通过3种方式设置类路径:
CLASSPATH
中设置。-cp
会覆盖CLASSPATH
。注意,如果文件的结构如下:
bin -
|
com -
|
mypackage -
|
Hello.class
和Hello
的包名称为com.mypackage
,然后以下命令应该有效:
java -cp C:\projects\myprojct\bin com.mypackage.Hello
或者,您可以cd
到C:\projects\myprojct\bin
并使用:
java com.mypackage.Hello
答案 2 :(得分:-2)
运行此功能
java averageAmpCov / src / averageAmpCov
但我猜你忘了先设置你的类路径设置类路径