[英]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.