簡體   English   中英

從已編譯的jar中讀取資源文件

[英]Reading a resource file from within compiled jar

我有以下問題。 我的項目結構是一個典型的maven Java項目的結構:

src/main/java - project .java files      
src/main/resources - project resources (log4j2.xml)
src/test/java - .java files for tests
src/test/resources - testng.xml file

在src / main / java中,我還有一個位於以下位置的包含JavaScript文件(我正在以Java代碼以編程方式執行的腳本)的軟件包: src/main/java/js/scripts/

自然,當我運行測試時,我可以訪問'scripts'文件夾中的* .js文件-我只是在使用FileUtils.readFileToString(new File(pathTo_jsFile))

但是,使用maven編譯項目后,此功能將不再起作用。

  1. 我無法編譯要放在現有包(/ js / scripts /)中的文件-我能夠將非Java文件添加到.jar的唯一方法是將它們作為資源添加到pom.xml中,但隨后將它們添加到.jar文件的根目錄中。

  2. 我無法從.jar文件中讀取任何內容。

首先,您應該將JavaScript文件放入src / main / resources文件夾。 在那里,它們應該由maven打包到.jar文件中,而無需maven進行任何特殊處理。 您可以將文件夾結構保留在資源文件夾中。

其次,您可以借助ClassLoader訪問Java中的資源:

getClass().getClassLoader().getResourceAsStream("js/scripts/myScriptfile.js");

這應該讓您將javascript文件作為輸入流。 如果您更喜歡該文件的URL(是的,當它包含在JAR文件中時也可以使用),只需使用getResource(...)而不是getResourceAsStream(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM