views:

1400

answers:

4

With RAD Version: 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.

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.

At this point, ideally my project should not have changed because I am using class files in a jar instead of the java code.

When I visit my web application in websphere, I get class not found errors on the classes that are now in the jar.

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.

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?

+1  A: 

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?

Stefan De Boey
I still couldn't figure it out. I added the jar to the Java EE module dependencies for the webapp. I did not change any configuration with the EAR.But why would a jar from a project have to be configured at the EAR or Webapp level. It is part of my source project and I am exporting it?Temporarily, I just copied the jar to the WEB-INF/lib directory under the webapp. And this works for the websphere runtime. But that isn't what I really wanted.
Berlin Brown
what did you do initially? create a jar with 'export to jar' from within eclipse, did you then place that file somewhere in the javasrc project and added it to the java build path of the web project? if that's the case then you still need to indicate to eclipse that this jar should be copied to WEB-INF/lib when you run/build the WAR/EAR. a better option would be to configure the build path to include the javasrc project as a dependency and then in java ee deps tick the checkbox for this project. this
Stefan De Boey
+2  A: 

We have had the same problem when we upgraded to 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.

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.

Ryan Magnusson
A: 

I had the same problem until I copied the jar to WebContent/WEB-INF/lib. You could try this.

xain
A: 

Hi all ,

This is regarding developing project in Struts framework , How can I upgrade or add struts2 in to the IBM RAD 7.0. Please give steps for doing this.

I am new to RAD 7.0 and Struts2.


  • Learn Struts2
BVNstruts
You should ask a new question using the "Ask Question" button at the top right corner of the page, instead of posting an answer to this question.
David