Java 为什么WebSphere在/WEB-INF/classes中扩展jar

Java 为什么WebSphere在/WEB-INF/classes中扩展jar,java,websphere,Java,Websphere,我在WebSphere8.5.5中遇到了一个奇怪的问题。 我有一个简单的.war归档文件,它在/WEB-INF/classes下有一个jar(是的,classes,这不是打字错误)。比如说, /WEB-INF/classes/my_file.jar 在WebSphere 8.5.5上,我在尝试加载应用程序时遇到异常。 这是一个例外(为清晰起见略为缩短): 我从这个异常中了解到,jar文件不是有效的zip文件。我缺少的是WebSphere为什么要复制和解包它?我可以阻止WebSphere这样做吗

我在WebSphere8.5.5中遇到了一个奇怪的问题。 我有一个简单的.war归档文件,它在/WEB-INF/classes下有一个jar(是的,classes,这不是打字错误)。比如说,

/WEB-INF/classes/my_file.jar

在WebSphere 8.5.5上,我在尝试加载应用程序时遇到异常。
这是一个例外(为清晰起见略为缩短):

我从这个异常中了解到,jar文件不是有效的zip文件。我缺少的是WebSphere为什么要复制和解包它?我可以阻止WebSphere这样做吗

更新:我认为这需要澄清。我非常了解JavaEE war结构。所说的罐子是故意的。在运行时,它被定位(使用ServletContext.getResource())并复制到临时文件夹中,然后在另一个Java进程中从那里启动它。 我的问题不是关于Java war结构,而是关于WebSphere为什么尝试解压缩它,以及我是否能够以某种方式控制这种WebSphere行为


更新2:这原来不是问题。jar文件已损坏并被替换。我把这个问题留在这里是因为我仍然很想知道为什么WebSphere会尝试解压它,以及我是否能够控制它。现有答案与所问问题不符。

请参见下面的Java EE WAR文件结构。这听起来不像是WebSphere的问题,它无法跨兼容JavaEE的应用程序服务器工作


更新(根据相关更新信息):我发现您有一个非常具体的要求。由于您使用ServletContext获取JAR文件的引用,我建议将其设计在WEB-INF中一个新的单独文件夹中(您的JAR将受到保护,ServletContext将能够找到它)。通过这种方式,您将维护JavaEE规范标准,并将能够完成您正在尝试做的事情

首先,您应该将JAR放在
WEB-INF/lib
中,而不是放在
classes
文件夹中。其次,我只是在类中使用jar部署了war,而WAS没有尝试扩展它。因此,请指定您使用的版本(Liberty或full),如何部署应用程序,因为很可能是与Eclipse相关的错误,以及为什么不将jar放在WEB-INF\lib中。请参阅问题的更新,谢谢。我不知道我为什么使用这个配置文件,不管默认配置是什么。
Caused by: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException: WEB-INF/classes/my_file.jar
at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.ZipStreamSaveStrategyImpl.save(ZipStreamSaveStrategyImpl.java:327)
//
org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.SaveStrategyImpl.save(SaveStrategyImpl.java:217)
at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ArchiveImpl.save(ArchiveImpl.java:2388)
at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ModuleFileImpl.save(ModuleFileImpl.java:516)
at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ArchiveImpl.saveAsNoReopen(ArchiveImpl.java:2608)
at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ArchiveImpl.saveAs(ArchiveImpl.java:2428)
at com.ibm.ws.management.application.client.AppInstallHelper.createEarWrapper(AppInstallHelper.java:1045)
... 41 more
Caused by: java.util.zip.ZipException: ZIP_Read: error reading zip file
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1200(ZipFile.java:47)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:501)
at java.util.zip.ZipFile$1.fill(ZipFile.java:269)
//
at java.io.FilterInputStream.read(FilterInputStream.java:101)
at org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil.copy(ArchiveUtil.java:180)
at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.ZipStreamSaveStrategyImpl.save(ZipStreamSaveStrategyImpl.java:320)
... 56 more