2017-08-01 207 views
0

我有一個akka http服務。我只是返回一個get請求的api文檔。該文檔在html文件中。在jar文件中運行時無法讀取文件

在IDE中運行時,它一切正常。當我將它打包成jar時,我收到錯誤'找不到資源'。我不確定它爲什麼不能讀取託管在jar中的html文件,並且在IDE中正常工作。

這裏是路線的代碼。

private Route topLevelRoute() { 
    return pathEndOrSingleSlash(() -> getFromResource("asciidoc/html/api.html")); 
} 

這些文件位於資源路徑中。

enter image description here

+0

如何更改爲getFromResource(「/ asciidoc/html/api.html」)? – StanislavL

+0

這不起作用。 ( – Newbee

回答

0

我有現在這個工作。

我正在這樣做。

private Route topLevelRoute() { 
try { 
    InputStreamReader inputStreamReader = new InputStreamReader(getClass().getResourceAsStream("/asciidoc/html/api.html")); 
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
    //Get the stream input into string builder 
    reader.lines().forEach(s -> strBuild.append(s)); 

    inputStreamReader.close(); 
    bufferedReader.close(); 
    //pass the string builder as string with contenttype set to html 
    complete(HttpEntities.create(ContentTypes.TEXT_HTML_UTF8, strBuild.toString())) 
} catch (Exception ex) { 
     //Catch any exception here 
} 
} 
+0

)這對於其他人來說並不是很好的例子,你在閱讀文件的時候阻塞了,我建議你找出你的類路徑問題,並使用內置的指令,如果上面的解決方案是你要去的請至少確保您在單獨的調度程序中運行它。有關更多信息,請參閱http://doc.akka.io/docs/akka/current/scala/dispatchers.html#problem-blocking-on-default-dispatcher。細節。 – johanandren