2011-07-27 67 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