这有点难以解释。
我使用tomcat 6.0测试部署一个war文件。我在用proguard混淆war文件。
要使用proguard,通常在WEB-INF/classes中的所有com.*,org.*等都必须打包到WEB-INF/lib中的单个.jar中。
到目前为止还不错。
当我部署的时候问题就来了。该应用程序使用hibernate和hibernate监听器。此侦听器无法加载。由此我推断,已经找到了带有完整类集的.jar,并且至少已经开始使用了。然而,hibernate监听器的失败结束了应用程序的部署,什么也没有出现,甚至索引页也没有出现。
我的日志文件(设置为debug)提供了:
[2011-11-11 10:19:33] [1381 prunsrv.c] [debug] Commons Daemon procrun log initialized
[2011-11-11 10:19:33] [info] Commons Daemon procrun (1.0.2.0) started
[2011-11-11 10:19:33] [info] Running Service...
[2011-11-11 10:19:33] [1165 prunsrv.c] [debug] Inside ServiceMain...
[2011-11-11 10:19:33] [info] Starting service...
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[0] -Dcatalina.home=C:\tomcat\Tomcat 6.0
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[1] -Dcatalina.base=C:\tomcat\Tomcat 6.0
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[2] -Djava.endorsed.dirs=C:\tomcat\Tomcat 6.0\endorsed
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[3] -Djava.io.tmpdir=C:\tomcat\Tomcat 6.0\temp
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[4] -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[5] -Djava.util.logging.config.file=C:\tomcat\Tomcat 6.0\conf\logging.properties
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[6] -Djava.class.path=C:\tomcat\Tomcat 6.0\bin\bootstrap.jar
[2011-11-11 10:19:33] [447 javajni.c] [debug] Jvm Option[7] vfprintf
[2011-11-11 10:19:33] [629 javajni.c] [debug] argv[0] = start
[2011-11-11 10:19:33] [655 javajni.c] [debug] Java Worker thread started org/apache/catalina/startup/Bootstrap:main
[2011-11-11 10:19:34] [1006 prunsrv.c] [debug] Java started org/apache/catalina/startup/Bootstrap
[2011-11-11 10:19:34] [info] Service started in 1138 ms.
[2011-11-11 10:19:34] [1272 prunsrv.c] [debug] Waiting worker to finish...
然后停下来。
卡塔琳娜给我:
11-Nov-2011 10:21:35 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
有没有人有过让hibernate在一个可混淆的战争中运行的经验(战争实际上还没有被混淆,它只是按照proguard需要的格式设置,以便混淆)、一个独立的jar,甚至只是如何获得更精确的日志记录!
谢谢
更新:
我原以为tomcat会在com.*类等所在的jar中找到,但现在我不确定了。有人知道如何使用web.xml指向WEB-INF/lib文件夹中的特定.jar吗?
目前,例如:
<listener>
<listener-class>com.*etc*.HibernateListener</listener-class>
</listener>
<servlet>
<servlet-name>Application Name</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
etc etc...
但所有这些路径都需要指向一个.jar文件。或者web.xml中的属性需要定义这些路径的位置。
谢谢
最佳答案
解决了的。
对于任何有同样问题的人:我最终使用WEB-INF/classes
中的logging.properties文件使日志工作。我在许多论坛帖子中设置了这种可能。主要的设置是调试以捕捉最大的细节。
这个日志记录让我看到一个jar丢失了,我以前把它放在/WEB-INF/lib
文件夹中,但是应用程序没有看到它,所以我不得不把这个类放在/src/
文件夹中并重新编译。不管怎样,它还是起作用了。
我对战争混淆的其他因素仍有重大问题,但这些是其他问题。
-S公司