2012-01-23 45 views
0

我正在使用java -classpath $CLASSPATH ...,其中$CLASSPATH已被設置爲/file1path/file1:/file2path/file2依此類推。儘管如此,Java卻抱怨沒有找到file1。我試圖設置-Dfile1=file:///fullpath/file1,但它仍然表示找不到該文件。除了我沒有看到像打字錯誤之類的簡單問題(我多次檢查過)之外,是否有任何理由可能會發生這種情況?爲什麼Java編譯器說我的文件在類路徑中找不到,當我可以在類路徑中清楚地看到它時?

更具體地說,this.getClass().getClassLoader().getResourceAsStream(configurationFileName)正在返回null

未找到的文件是配置文件(.properties),而不是JAR文件。

+1

該文件是找不到的類文件嗎?如果不是,是jar文件的一部分嗎? –

+1

你如何查找文件以獲取錯誤?你在談論一個.java文件,一個.properties文件或類似的文件嗎?我假設你直接調用java而沒有IDE?另外,如果您正在查看源文件夾,並且您正在使用單獨的類文件夾,您確定該文件正在編譯到類文件夾中嗎? –

+0

它是一個.properties文件。 –

回答

3

您將classpath設置爲指向包含某些內容或包含資源的存檔的目錄。我不相信你可以直接添加資源到classpath

嘗試設置你的classpath/file1path代替/file1path/file1

+0

似乎文件已被直接添加到類路徑以前,這一直工作。 –

+0

聽到這個我真的很驚訝。我從來沒有見過這樣的行爲,我只是嘗試了一下自己的測試,直接引用一個文件不起作用。這是Sun JVM嗎? – Vadim

+0

另外,有沒有可能被引用的文件恰好位於classpath中的目錄或jar中? – Vadim

3

類路徑應該指定包的層次結構根的目錄。

包org.djna,文件系統:如果你想使用getResourceAsStream()打開從你的應用程序文件C:/myhome/javastuff/org/djna/Myclass.java

類路徑設置爲c:/myhome/javastuff

或一些這樣的的路徑的細節取決於是否或不是文件名有領先的/。一口氣讀完文檔,一切都會變得清晰。

+0

我正在閱讀http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29,並且所有內容都沒有變得清晰。是否還有其他一些文件可能會更有幫助? –

+0

斜線似乎沒有任何關係。 –

相關問題