2011-07-27 44 views
2

我刚刚回来修复我编写的一个小程序中的一些错误,现在我无法编译,因为一个包不存在(根据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,但是只留下了全球的一个。我重新添加了java classpath的东西,它再次运行!

+0

您是否检查CLASSPATH环境变量是否实际设置并指向所需的库? – casablanca

+0

@casablanca设置Classpath并指向正确的位置。 – masher

+0

如果你的意思是CLASSPATH环境变量,那就错了。你不应该有一个。 – duffymo

回答

1

你解包Apache的JAR和.class文件添加到您的应用程序?你为什么不把JAR添加到你的CLASSPATH

您不应该依赖于CLASSPATH环境变量。在编译时,最好使用-classpath选项,javac.exe,而在运行时使用java.exe

+0

我需要这是一个独立的程序,所以我需要将类文件包括在jar中。 – masher

+0

我试过了不同的编译命令:'javac -verbose -d build -classpath。 CommandLine.java'。现在它起作用(出于某种原因)。 – masher

2

除非它是一个错字,请注意你说com\apache\commons\cli但进口想org.apache.commons.cli - org VS com

+0

它是(是)错字 – masher