2013-10-16 74 views
0

我有一個第三方庫,可以與jUnit一起使用,但不會部署到tomcat。挖掘到代碼中,我可以看到它失敗在這裏:getResourceAsStream在jUnit上工作,但不在Tomcat上

final String path = "/api-version.dat"; 
final InputStream stream = ClassLoader.class.getResourceAsStream(path); 

與API version.dat位於JUnit測試,但這樣做在Tomcat結果NullPointerException同樣由於到Tomcat無法獲得API版本文件。該文件存在,它位於第三方jar內。什麼到目前爲止,我曾嘗試:

  • 檢查罐子被導入到Tomcat:這是WEB-INF/lib目錄裏面,所以我會說是
  • 創建API-version.dat文件,並把它放在我的資源文件夾(我使用maven)。不起作用。

有什麼想法?

+1

打印出'System.getProperty(「java.class.path」);'並檢查lib是否在那裏。 –

+0

JAR文件中的api-version.dat文件的路徑是什麼? JAR文件位於WEB-INF/lib或其子目錄中嗎? –

回答

1

在Java EE enviroments使用:

final InputStream stream = Thread.currentThread() 
           .getContextClassLoader() 
           .getResourceAsStream(path); 

查看更多在Difference between thread's context class loader and normal classloader

+0

但是,這是一個第三方庫,我無法對其進行修改。這是否意味着我無法將其部署到JEE環境? –

+0

對。是否有可能繼承該類並重寫該方法?另一種方法是在課堂上注入新的方法,但這很複雜。 –

+0

我已經重寫了該類,但這也不起作用。它工作,如果我返回一個字符串作爲版本,但我想要一個更清潔的方式。 –

相關問題