【发布时间】:2012-01-23 10:55:12
【问题描述】:
我有一个使用 spring 注释扩展的 Web 应用程序,并且我的 proguard 配置如下:
-printmapping out.map
-dontoptimize
-keepdirectories
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,SourceFile,LineNumberTable,*Annotation*
-adaptresourcefilenames **.xsd,**.wsdl,**.xml,**.properties,**.gif,**.jpg,**.png
-adaptresourcefilecontents **.xsd,**.wsdl,**.xml,**.properties,META-INF/MANIFEST.MF
-dontshrink
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keep @org.springframework.transaction.annotation.Transactional class *
-keep @org.springframework.stereotype.Service class *
-keep @org.springframework.stereotype.Controller class *
-keep @org.springframework.beans.factory.annotation.Autowired class *
-keep @org.springframework.web.bind.annotation.ResponseBody class *
-keep @org.springframework.web.bind.annotation.RequestMapping class *
-keep @org.springframework.stereotype.Repository class *
-keep @javax.annotation.Resource class *
-keep @javax.persistence.Entity class *
-keep @javax.persistence.Table class *
-keep @javax.persistence.Id class *
-keep @javax.persistence.GeneratedValue class *
-keep @javax.persistence.Column class *
-keep @javax.persistence.Transient class *
-keep @org.springframework.ws.server.endpoint.annotation.Endpoint class *
-keep @org.springframework.ws.server.endpoint.annotation.PayloadRoot class *
-keep @org.springframework.ws.server.endpoint.annotation.ResponsePayload class *
它构建良好,没有任何警告。 但是在tomcat中部署后,在浏览器中打开页面就一直等待,没有任何结果,可能是什么问题?
【问题讨论】:
-
你可以在等待期间使用
jstack或JVisualVM进行线程转储吗?另外,也许浏览器会默默地记录一些错误? -
如果您在 unix/linux 上运行,您可以通过发出
killall -QUIT java进行线程转储。线程转储将出现在catalina.out。 -
WEB-INF/...下有.class文件吗?上次我在论坛上与 Proguard 的开发人员交谈时,Proguard 无法在 .war 文件中处理 WEB-INF(在 com/yourcompany/yourpackage 下)中解压的 .class 文件:它只能正确处理 .jar 文件
-
显示您的 tomcat 日志将有助于诊断问题
-
@Harout:这不是 100% 正确的,对于那个问题有同样的答案:我们需要更多信息:日志、转储或其他任何东西!目前这个问题有点像:“有什么不行,请帮忙。”