先看圖,然後我仔細解釋
最近發現找不到文件,同樣的代碼在eclipse中可以正常找到,對於idea不熟悉,所以來此請教,我是把一些文件拷resources目錄下,發現找不到了,使用相對路徑,我看到target/classes中是編譯過去了的啊,這個路徑該怎麼寫?
在eclipse中
(1) 主項目包含的兩個模塊 topsoft-test(web項目) topsoft-utils(java maven項目)
(2)(3)(4) 根據new File("log4j.xml);以及創建文件可以發現路徑是相對於子項目topsoft-utils
的跟路徑,(4)標注了這個測試類是在topsoft-utils中運行的
(5) 假如說我想訪問(5)標注處的這個文件,相對路徑該怎麼寫?
轉到IntelliJ IDEA中,目錄結構一樣,運行的測試也是一樣,打印出來的目錄不同,我想這是IDE的區別,或者說是在IDEA的配置當中哪裡出了問題,導入maven項目我就默認的 Project Structure 我看到裡面有三個模塊。
路徑中只寫文件名不是相對於classpath路徑麼,為什麼相對於項目的跟路徑了,eclipse中這樣可以接受,至少還能加上src/main/....訪問到,而在IntelliJ中就完全不對了,主項目打包會產生子項目的jar包,而我訪問的文件應該是相對於子項目的classpath路徑,在IntelliJ中,resources是在classpath中的,如果只寫名字應該是相對於子項目的resources目錄才對啊,理論上。
請賜教
我查看了打包編譯後的目錄,確實是打進去了的,為什麼通過只寫文件名這種方式就訪問不到呢?
建個目錄,把你要訪問的文件放進去,把這個目錄標記為Recources,然後用下面的方式訪問:
yourClassName
.class.getClassLoader().getResource("xxxxxxxx.txt"
).getFile()
紅色地方替換為你自己的。