java Rational Application Developer (RAD) 7.5+ 和 websphere 运行时不会从项目中提取 jars
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2364752/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Rational Application Developer (RAD) 7.5+ and websphere runtime will not pick up jars from projects
提问by Berlin Brown
With RAD Version: 7.5.3, Java 1.5.
使用 RAD 版本:7.5.3,Java 1.5。
I have a couple of different projects. I needed to break out the java code and turn the *.class files into a jar. So basically, same *.class files I just removed the code and then jarred the class files into a jar.
我有几个不同的项目。我需要分解 java 代码并将 *.class 文件转换为 jar。所以基本上,相同的 *.class 文件我只是删除了代码,然后将类文件放入 jar 中。
I broke the classes into a jar and then included the jar in the project. And I also did an order/export on the jar so that other projects can see the jar.
我将类分解成一个 jar,然后将 jar 包含在项目中。而且我还在jar上做了一个订单/导出,以便其他项目可以看到这个jar。
At this point, ideally my project should not have changed because I am using class files in a jar instead of the java code.
在这一点上,理想情况下我的项目不应该改变,因为我在 jar 中使用类文件而不是 java 代码。
When I visit my web application in websphere, I get class not found errors on the classes that are now in the jar.
当我在 websphere 中访问我的 Web 应用程序时,我在现在位于 jar 中的类上发现 class not found 错误。
Project Structure:
项目结构:
A. Project earApp -- will need the webapp
B. Project webapp -- will need the project (no jar files or *.java files are found in this project)
C. Project javasrc -- the java source and the NEW JAR file are found here.
I don't think websphere is acknowledging the jar.
我不认为 websphere 正在承认 jar。
Here is the error:
这是错误:
java.lang.NoClassDefFoundError: com.MyApp
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:675)
at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:614)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:431)
at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
at java.lang.Class.getDeclaredMethodsImpl(Native Method)
at java.lang.Class.getDeclaredMethods(Class.java:664)
at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.collectMethodAnnotations(ScannedAnnotationData.java:130)
at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.<init>(ScannedAnnotationData.java:47)
at com.ibm.ws.webcontainer.annotation.AnnotationScanner.scanClass(AnnotationScanner.java:61)
at com.ibm.ws.wswebcontainer.webapp.WebApp.processRuntimeAnnotationHelpers(WebApp.java:711)
at com.ibm.ws.wswebcontainer.webapp.WebApp.populateJavaNameSpace(WebApp.java:624)
at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:289)
at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:93)
at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:162)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:671)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:624)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:395)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:611)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1274)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1165)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:587)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:832)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2124)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
What do you think I need to do?
你觉得我需要做什么?
回答by Ryan Magnusson
We have had the same problem when we upgraded to WAS 7.0
我们在升级到 WAS 7.0 时遇到了同样的问题
Apparently WAS 7.0 changed how it looks up its dependencies, and you need to make sure the JAR files you are creating are also mentioned in the manifest file where they are used.
显然,WAS 7.0 改变了它查找依赖项的方式,您需要确保您正在创建的 JAR 文件也在使用它们的清单文件中提及。
So if you're using it in both the EJB and Web project, you will need to update both of the manifest files to reference the JAR.
因此,如果您在 EJB 和 Web 项目中都使用它,则需要更新两个清单文件以引用 JAR。
回答by Stefan De Boey
did you add the jar to the Java EE module dependencies in the project properties dialog? is the jar listed under EAR or Web Libraries node in the package explorer?
您是否在项目属性对话框中将 jar 添加到 Java EE 模块依赖项?jar 是否列在包浏览器中的 EAR 或 Web Libraries 节点下?
回答by xain
I had the same problem until I copied the jar to WebContent/WEB-INF/lib. You could try this.
在将 jar 复制到 WebContent/WEB-INF/lib 之前,我遇到了同样的问题。你可以试试这个。

