2012-02-07 44 views
0

我想部署一個戰爭到JBoss 6,我得到以下例外,似乎envolve在戰爭中的一個罐子:webservices-rt.jar 這個工程在myeclipse-tomcat中很好,那麼爲什麼jboss會拒絕這場戰爭呢?戰爭在tomcat工作,但不在jboss 6

14:45:03,286 ERROR [AbstractKernelController] Error installing to PostClassLoader: name=vfs:///C:/jboss-6/server/node01/deploy/altorweb.war state=ClassLoader mode=Manual requiredState=PostClassLoader: org.jboss.deployers.spi.DeploymentException: Error during deploy: vfs:///C:/jboss-6/server/node01/deploy/altorweb.war 

... 

Caused by: java.lang.Error: Error visiting "/C:/jboss-6/server/node01/deploy/altorweb.war/WEB-INF/lib/webservices-rt.jar/com/sun/xml/bind/v2/schemagen/XmlSchemaGenerator$Namespace.class" 
     at org.jboss.classloading.plugins.vfs.VFSResourceVisitor.visit(VFSResourceVisitor.java:268) [jboss-classloading-vfs.jar:2.2.0.Alpha7] 
     at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:407) [jboss-vfs.jar:3.0.0.CR5] 
+0

發現了一個類似的問題,沒有正確的答案:http://stackoverflow.com/questions/4410017/how-to-separate-ear-classloader-and-system-classloader-in-jboss-6 – 2012-02-07 08:45:37

回答

1

JBossAS6的解壓縮實現在功能上有點短。基本上創建zip壓縮文件很容易,它會在解壓縮時創建相同的錯誤;即在部署戰爭/耳中。爲避免此錯誤,歸檔文件中允許的文件名應採用cp437編碼。從存檔中刪除/重命名所有非英文文件名。

** zip容器只允許按規範提供Cp437和UTF-8編碼的文件名,但缺乏強制執行此規則的功能。不幸的是,它很容易被打破。所以它不是嚴格的JBossAS6錯誤,但是很容易在JBoss上看到這個錯誤,因爲它使用非java-defult unziping代碼。

+0

我怎麼檢查我是否有非Cp437/utf8文件名?我看不到任何 – 2012-02-07 12:03:29

+0

你不能。這是zip檔案的問題。如果可能的話,jboss不會有這個錯誤。如果你的文件系統的編碼不同於zip規範所要求的,那麼文件的ziping只會在zip容器中轉儲字節數組的文件名,從而產生編碼錯誤。例如在Linux上ziping。 Ant提供zip任務的參數來覆蓋此問題。你的錯誤可能是也可能不是我正在談論的事情,但是當我用easterneuropen變音字母部署檔案時,我在jboss上發生了這個錯誤。這就是我實際發現的有關zip編碼問題的方式。 – Talijanac 2012-02-07 12:36:49