我刚回来修复了我编写的一个小程序中的一些错误,现在我无法编译,因为包不存在(根据javac)。
据我所知,我的类路径或目录内容没有改变。我不知道之间是否有任何Java更新。
在我的根目录中,我有四个组成我程序的Java文件。他们没有归属于他们的任何包裹。另外,我在根目录中有目录结构org\apache\commons\cli
,其中包含来自Apache Commons的CLI java文件。 Apache文件确实有一个包,它反映了它们所在的目录结构。
如果我发出命令javac -verbose -d build CommandLine.java
,则失败并显示
CommandLine.java:28: package org.apache.commons.cli does not exist
import org.apache.commons.cli.*;
^
CommandLine.java
是该计划的切入点。
编译器没有尝试编译CLI文件,如果我事先编译它们,则仍然会发生故障。此外,CLI也可以在我的类路径中使用。
我正在运行javac 1.6.0_12。
我能做什么/尝试?
编辑答案:
如下所述,我将编译命令更改为:
javac -verbose -d build -classpath . CommandLine.java
现在它有效。不知道为什么以前做过,为什么它现在停止了......
因问题原因而被编辑
我安装了一个程序,它也使用CLASSPATH来运行自己的东西。它改变了属于用户的CLASSPATH,但仅留下了全局的CLASSPATH。我重新添加了java类路径的东西,它再次起作用了!
答案 0 :(得分:2)
除非这是一个错字,否则请注意您说com\apache\commons\cli
但导入需要org.apache.commons.cli
- org
vs com
答案 1 :(得分:1)
您是否解压缩了Apache JAR并将.class文件添加到您的应用程序中?你为什么不把JAR添加到你的CLASSPATH
?
您不应该依赖CLASSPATH
环境变量。最好在编译时使用-classpath
javac.exe
选项,在运行时使用java.exe
。