2016-01-23 89 views
0

在問我的問題之前,我最好說我正在使用沒有管理員權限的公司筆記本電腦。我需要的大多數軟件都來自公司內部編寫的舊軟件包,其中包含有用和過時的軟件,因此環境有點混亂,我的筆記本電腦在他的筆記本電腦上也沒有同樣的問題。Flyway在weblogic Java EE 7部署中找不到資源

我使用的Weblogic 12.2.2.1(至少這一個來自一個乾淨安裝程序)用java 8更新65.

我有一個包含在根級別與一些資源和一個jar文件的耳文件與Web應用程序和所有依賴關係的戰爭文件。該應用程序應該在Java EE 7環境中工作。當我在本地部署時,我使用JDK工具檢查了類路徑,我只能看到基本的java和weblogic庫,然後使用Classloader分析工具檢查了類路徑,並且看到earfile根級別的jar被加載由weblogic.utils.classloaders.ChangeAwareClassLoader而戰爭文件的所有內容由weblogic.utils.classloaders.GenericClassLoader 這種分離產生了影響裝載,因爲在啓動時遷飛嘗試加載遷移腳本作爲classpath下的資源,它失敗。我調試了它,我看到它從GenericClassLoader運行,並且類加載器無法看到這些資源。

我的第一個問題是爲什麼GenericClassLoader找不到資源,它不應該檢查其他類加載器在繼承鏈中持有的資源嗎? 但是,那麼更多的是Weblogic問題,Flyway問題還是安裝問題?

我可以期待未來的其他第三方庫搜索某些資源時會出現同樣的問題嗎?

作爲解決方案,我將腳本移動到war文件,是否有更清晰的解決方案?

附加說明,我嘗試了分階段和非分階段部署。

回答

1

EAR文件根目錄下的普通jar文件在沒有其他配置的情況下無法訪問任何其他模塊,例如在Web模塊中添加包含Class-Path條目的META-INF/MANIFEST.MF文件。

對此的一個更簡便的方法是把你的資源罐子在lib目錄中的EAR文件。此目錄中罐自動可見在EAR所有其它模塊:

myApp.ear 
\-META-INF 
    \-application.xml 
\-myWebApp.war 
\-lib 
    \-resources.jar