Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Panel

When I deploy my application to the OC4J container, the deployment fails with a NoSuchMethodError for class org.objectweb.asm.ClassVisitor.visit.

    The OC4J deployment fails with the error:  Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/Strin;g[Ljava/lang/String;Ljava/lang/String;)

ANSWER:

  • The issue is that multiple (and old) versions of the "asm" jar are being deployed.   Do the following:
    1. remove dependencies asm and cglib from the project pom.xml file.
    2. add dependency for cglib-nodep version 2.2.2 in your project pom.xml (this pulls in asm).
    3. put in exclusions for any other indirect dependencies on of cglib and asm.
Panel

Anchor
My build fails whenever MyEclipse tries to deploy my application to my OC4J application server
My build fails whenever MyEclipse tries to deploy my application to my OC4J application server

My build fails whenever MyEclipse tries to deploy my application to my OC4J application server.

ANSWER:

  • Build for a project will fail in a MyEclipse environment if there are 2 maven natures/libraries in the .project and. classpath files.  Sometimes MyEclipse will automatically create or configure your .classpath and .project file when you check out a project.  If it adds 2 maven natures (org.maven.ide.eclipse and org.eclipse.m2e ) in your project, you will not be able to build your project.  The build will fail when it tries to deploy the application to the application server.  The logs in the server will shows an error indicating that it is unable to load the applicationContext as it cannot create the daoFoundation bean, sessionFactory bean, and so on as a result of a missing object: Student.

    To resolve the problem, remove one of the maven natures/libraries in the project configuration.  It can be done via deleting the maven nature from the Libraries in the Java Build Path of the project as shown in the panel below:



    Also, you can edit the .classpath and .project file manually.  You need to choose either one of the maven nature or classpath entry.  Using the org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER, the following are excerpts of the .classpath and .project files that are configured properly:

    1. For the .classpath file:
      Code Block
      <?xml version="1.0" encoding="UTF-8"?>
      <classpath>
       <classpathentry kind="src" output="target/classes" path="src/main/java"/>
       <classpathentry kind="src" output="target/classes" path="src/main/resources"/>
       <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
       <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
       <classpathentry kind="con"  path="org.eclipse.jdt.launching.JRE_CONTAINER
           /org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
       <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
         <attributes>
           <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
         </attributes>
       </classpathentry>
       <classpathentry kind="output" path="target/classes"/>
      </classpath>
      
    2. for the .project file:
      Code Block
      <buildCommand>
         <name>org.eclipse.m2e.core.maven2Builder</name>
         <arguments>
         </arguments>
      </buildCommand>
      .
      .
      <natures>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
        .
        .
      </natures>
      

...