[英]Grails - trying to deploy a nojars application into glassfish 3.0.1
由於內存限制,我試圖構建一個具有較小內存占用的grails應用。 我用“ --nojars”這個參數來打架。 我創建了一個沒有所有jar的war文件,當我在glassfish中部署時遇到此錯誤
加載應用程序時發生異常:java.lang.Exception:java.lang.IllegalStateException:ContainerBase.addChild:開始:org.apache.catalina.LifecycleException:java.lang.IllegalArgumentException:java.lang.ClassNotFoundException:org.codehaus.groovy。 grails.web.util.Log4jConfigListener
似乎應用程序無法找到jar文件的位置。
在將應用程序部署到glassfish之前,我已經指出了該庫的路徑。
我錯過了嗎?
通常建議使用GlassFish的Common Classloader 。 這意味着將共享的JARS放入$ domain-dir / lib文件夾(但不放入該文件夾的子文件夾)。
您可能正在嘗試將應用程序類加載器與asadmin deploy --libraries
命令一起使用。 這更加復雜且容易出錯。 如果您不需要具有不同Web應用程序的相同JAR的不同版本,則絕對應該使用上面指定的Common Classloader 。
另請參閱類加載器層次結構以獲取參考。
編輯根據提問者的評論進行了更新:
domain/domain1/lib
文件夾肯定可以工作(我已經測試過)。 要驗證這一點,請將log4j.jar
放入該文件夾,然后將test.jsp
添加到domain1/applications/$applicationName
,其中僅包含:
<% out.println(
org.apache.log4j.Logger.getLogger(this.getClass())); %>
如果可以,但是您的其他代碼不起作用,則可能需要考慮另一點:您在Logger.getLogger(..)
使用Log4J的Logger.getLogger(..)
還是Apache Commons的LogFactory.getInstance(..)
?
有關相關問題,請參閱使用Jakarta Commons Logging時遇到的類加載器問題分類法 。 -我也建議您發布完整的堆棧跟蹤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.