Classloading Order in /WEB-INF/lib

hi all,
we are using wl 8.1sp2 and we have a problem with the classloading in a webapp. The requested class is loaded on startup.
My question is: In which ordering are the classes - or better jar-files - loaded, which are located in the /WEB-INF/lib directory... is it alpha-numerical? random?
Is there a way to control the ordering?
I browsed the tutorials but could not find an answer to that question.
- odilo

I am running into exactly the same issue. I haven't found any solution yet.
Our primary reason for having the same classes in multiple jars is for patch release purposes. We would like to drop a patch jar into a directory (ideally somewhere other than WEB-INF/lib) and prepend it to the classpath via some mechanism... for example the Class-Path attr of MANIFEST.MF
One alternative is to replace the entire existing core jar file with a patched version. This is quite inconvenient with our current QA process, since the complete functionality would have to be re-tested rather than just a point test of the patched area.
I could also envision a need for this in a situation where you have third-party libraries. It's not always easy to control their packaging. Sometimes they come bundled with old utility classes which you would like to shadow with newer versions.

Similar Messages

  • WLS 6.1sp3 classloader loads all archives within WEB-INF/lib/*

              Within the lib directory of my webapp, I have several different versions of myarchive.jar.
              In WLS 6.0 I would keep older version within the lib directory but renaming them
              so that the current release would get loaded.
              $WL_HOME/config/mydomain/applications/myapp/WEB-INF/lib
              myarvhive.jar
              myarvhive.jar_bf_2.3release
              myarvhive.jar_bf_2.4release
              myarvhive.jar_bf_2.5release
              In WLS 6.0 this method of storing the previous archive version was safe. However,
              now after implementing WLS 6.1, I only can have the current archive release within
              the lib directory. If the previous versions are store within the lib, old methods
              are used.
              I do not understand the WLS classloader behavior and why is it different from
              WLS 6.0?
              wls- WebLogic Server 6.1 SP3
              platform- OSF1 localhost V5.1 1885 alpha
              jvm- Classic VM (build 1.3.0-1, native threads, jit)
              

              Within the lib directory of my webapp, I have several different versions of myarchive.jar.
              In WLS 6.0 I would keep older version within the lib directory but renaming them
              so that the current release would get loaded.
              $WL_HOME/config/mydomain/applications/myapp/WEB-INF/lib
              myarvhive.jar
              myarvhive.jar_bf_2.3release
              myarvhive.jar_bf_2.4release
              myarvhive.jar_bf_2.5release
              In WLS 6.0 this method of storing the previous archive version was safe. However,
              now after implementing WLS 6.1, I only can have the current archive release within
              the lib directory. If the previous versions are store within the lib, old methods
              are used.
              I do not understand the WLS classloader behavior and why is it different from
              WLS 6.0?
              wls- WebLogic Server 6.1 SP3
              platform- OSF1 localhost V5.1 1885 alpha
              jvm- Classic VM (build 1.3.0-1, native threads, jit)
              

  • WEB-INF/lib WEB-INF/classes ClassLoader problem

    I have observed that in WL 8.1, a class in a jar deployed in WEB-INF/lib does not have the ability to access a resource deployed in WEB-INF/classes. Is this the intended behavior to not have WEB-INF/lib and WEB-INF/classes in the same ClassLoader? If so, is there a way to configure this behavior to give permission to classes loaded in WEB-INF/lib to the ClassLoader that has WEB-INF/classes?
              thanks,
              Kenneth Shin

    Are you really certain that's what's happening? Is it possible the jar file stored in WEB-INF/lib isn't found elsewhere in the CLASSPATH, perhaps by a higher-level classloader? You might consider setting "prefer-web-inf-classes" to true in your weblogic.xml file, to ensure that the jars in WEB-INF/lib are being used instead of from somewhere else.

  • Jar files not in WEB-INF/lib (custom ClassLoader?)

    I need to use classes in my JSP that do not come from a JAR file in the standard location. Sounds like I "simply" need to extend the ClassLoader used by the app server for loading the JSP. Is there any way of doing that?
    Example: my.jsp
    <h1>Hi</h1>
    <%
    FOO x = new FOO(); // code from a non-standard place
    ClassLoader cl = getClass().getClassLoader();
    %>
    I cannot put FOO.class into WEB-INF/lib or any of the standard places. Ideally I'd like to give the ClassLoader (cl above) a different (custom) parent ClassLoader which would know how to resolve FOO.class.
    I've poured over docs and Google and WebSphere and the Tomcat source code. Is this request of mine really so outrageous? I'm about the give up. What good are custom classloaders if one can't use them?

    You are essentially making the argument "All that Java
    needs is a URLClassLoader, and no one has any need for
    any custom ClassLoaders". (After all, that's all that
    I seem to have in a JSP context, with a list of
    hard-coded URLs into that URLClassLoader ...)
    Do a Google search on "custom ClassLoader" and you
    will find lots of reasons why people want to have
    custom ClassLoaders, such as ones that don't use any
    JAR or .class files ... which would qualify as why I
    can't put them into a certain place ...To be fair to duffymo, that is not how I read his argument. I read it as:
    "Sometimes we try to do things the hard way. If we sit back and rethink the problem, an easier solution might come about."
    I think this is a good opportunity to explain why you can not use the normal class loader heirarchy. You have no JARs and no .class files? Then where are you getting the class definitions? If you explain enough so that we might understand the problem:
    1) we might be able to come up with a solution or
    2) you might see a different approach before you are even done explaining
    #2 has happened to me more times then I can count. I sit down formulating a question for the forums, make sure I include enough detail to explain my problem. And by the time I am done I have a new (usually simpler) approach to solving the problem.
    Or you could sit and defend your first approach without providing any context and accomplish nothing. So its up to you.

  • Oc4j 10.1.3.0.0Prev4 does not load libs in WEB-INF/lib

    Hi,
    trying to use an existing application with oc4j I have serious problems.
    When trying to deploy I get exceptions (ClassNotFound) of classes that are in libs that are in the WEB-INF/lib folder of the war file I want to deploy:
    05/09/23 17:20:21 CharScanner; panic: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
    This class is in hibernate3.jar which is included in the war-file.
    When I place all the libs into the applib folder it does deploy. But then it crashes at runtime telling me the classes are duplicate (one in the war, one in applib).
    Any suggestions what I can do would be greatly appreciated.
    Norbert

    Hello,
    Instead of simply dropping the Jar file in the applib directory you should create shared libraries that will give you better control of what is happening at the classloader level (System, Application and Web Application)
    Please take a look to the 10.1.3 How tos about shared library. (Swapping XML parser and JDBC driver), and also to the documentation, chapter 7 "Using Shared Libraries" of the OC4J Configuration and Administration Guide
    Regards
    Tugdual Grall

  • JAR Files not found from /WEB-INF/lib

    It appears that weblogic server (6.1 SP2 I believe) is not finding all
    the jar files in the /WEB-INF/lib directory. Some, but not all. I am
    not using a WAR file, the dirctories are right on the disk. I start
    out with the following jar files in my WEB-INF/lib directory:
    Volume in drive C has no label.
    Volume Serial Number is 641F-B7A0
    Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\li
    b
    02/13/2002 11:34a <DIR> .
    02/13/2002 11:34a <DIR> ..
    01/25/2002 09:44a 45,386 activation-1.0.1.jar
    01/07/2002 04:49p 1,124,276 classes12.jar
    01/25/2002 09:44a 379,658 ecs-1.4.1.jar
    01/25/2002 09:44a 175,666 hsql.jar
    01/25/2002 09:44a 76,964 httpunit.jar
    01/25/2002 09:44a 236,041 idb.jar
    01/25/2002 09:44a 29,937 jakarta-regexp-1.3-dev.jar
    01/25/2002 09:44a 84,854 jdbc-se2.0.jar
    01/25/2002 09:44a 6,727 jdbc2_0-stdext.jar
    01/25/2002 09:44a 98,496 jndi-1.2.1.jar
    01/25/2002 09:44a 17,619 jta1.0.1.jar
    01/25/2002 09:44a 97,382 junit-3.2.jar
    01/25/2002 09:44a 152,037 log4j-1.1.jar
    01/25/2002 09:44a 280,984 mail-1.2.jar
    01/25/2002 09:44a 109,927 mm.mysql-2.0.4.jar
    01/25/2002 09:44a 76,734 oro.jar
    01/25/2002 09:44a 194,500 postgresql.jar
    01/25/2002 09:44a 4,041 README.txt
    01/25/2002 09:44a 208,635 sapdbc.jar
    02/13/2002 11:21a 216,879 STT.jar
    02/08/2002 12:15p 707,897 turbine-2.2b1.jar
    01/25/2002 09:44a 369,494 velocity-1.2-dev.jar
    01/25/2002 09:44a 31,326 village-1.5.1.jar
    01/25/2002 09:44a 436,094 xalan-1.2.1.jar
    01/25/2002 09:44a 840,704 xerces-1.3.0.jar
    01/25/2002 09:44a 47,926 xmlrpc.jar
    26 File(s) 6,050,184 bytes
    2 Dir(s) 29,539,246,080 bytes free
    When I run the server, only these files are put in the tmp_war
    directory:
    Volume in drive C has no label.
    Volume Serial Number is 641F-B7A0
    Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\_t
    mp_war_myserver_myserver_garyapp\WEB-INF\lib
    02/15/2002 12:31p <DIR> .
    02/15/2002 12:31p <DIR> ..
    02/15/2002 12:31p 1,124,276 classes1263855.jar
    02/15/2002 12:31p 175,666 hsql63856.jar
    02/15/2002 12:31p 76,964 httpunit63857.jar
    02/15/2002 12:31p 236,041 idb63858.jar
    02/15/2002 12:31p 6,727 jdbc2_0-stdext63859.jar
    02/15/2002 12:31p 76,734 oro63860.jar
    02/15/2002 12:31p 194,500 postgresql63861.jar
    02/15/2002 12:31p 208,635 sapdbc63862.jar
    02/15/2002 12:31p 216,879 STT63863.jar
    02/15/2002 12:31p 47,926 xmlrpc63864.jar
    10 File(s) 2,364,348 bytes
    2 Dir(s) 29,539,078,144 bytes free
    It's not only that the files don't show up, of course: if I run the
    system and it makes references to the files, I get a
    ClassNotFoundException:
    <Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
    <[WebAppServletContext(7243997,gar
    yapp,/garyapp)] Error loading servlet: "garyapp"
    java.lang.ClassNotFoundException: org.apache.turbine.Turbine
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:179)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
    areClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
    areClassLoader.java:43)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
    mpl.java:583)
    at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
    java:368)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:200)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:2495)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2204)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
    >
    <Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
    <[WebAppServletContext(7243997,gar
    yapp,/garyapp)] Servlet failed with ServletException
    javax.servlet.ServletException: Servlet class:
    'org.apache.turbine.Turbine' coul
    d not be loaded - the requested class wasn't found in the classpath:
    'C:\bea\wl
    server6.1\config\mydomain\applications\garyapp;C:\bea\wlserver6.1\.\config\mydom
    ain\applications\garyapp\WEB-INF\classes;C:\bea\wlserver6.1\.\config\mydomain\ap
    plications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\classe
    s1263855.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_
    tmp_war_myserver_myserver_garyapp\WEB-INF\lib\hsql63856.jar;C:\bea\wlserver6.1\.
    \config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp
    \WEB-INF\lib\httpunit63857.jar;C:\bea\wlserver6.1\.\config\mydomain\applications
    \garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\idb63858.jar;C:\
    bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver
    myservergaryapp\WEB-INF\lib\jdbc2_0-stdext63859.jar;C:\bea\wlserver6.1\.\confi
    g\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-I
    NF\lib\oro63860.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WE
    B-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\postgresql63861.jar;C:\bea\
    wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_mys
    erver_garyapp\WEB-INF\lib\sapdbc63862.jar;C:\bea\wlserver6.1\.\config\mydomain\a
    pplications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\STT63
    863.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_w
    ar_myserver_myserver_garyapp\WEB-INF\lib\xmlrpc63864.jar'
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
    mpl.java:594)
    at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
    java:368)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:200)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:2495)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2204)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
    >

    Please open a case with support on this issue.
    Thanks,
    Michael
    Gary Bisaga wrote:
    It appears that weblogic server (6.1 SP2 I believe) is not finding all
    the jar files in the /WEB-INF/lib directory. Some, but not all. I am
    not using a WAR file, the dirctories are right on the disk. I start
    out with the following jar files in my WEB-INF/lib directory:
    Volume in drive C has no label.
    Volume Serial Number is 641F-B7A0
    Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\li
    b
    02/13/2002 11:34a <DIR> .
    02/13/2002 11:34a <DIR> ..
    01/25/2002 09:44a 45,386 activation-1.0.1.jar
    01/07/2002 04:49p 1,124,276 classes12.jar
    01/25/2002 09:44a 379,658 ecs-1.4.1.jar
    01/25/2002 09:44a 175,666 hsql.jar
    01/25/2002 09:44a 76,964 httpunit.jar
    01/25/2002 09:44a 236,041 idb.jar
    01/25/2002 09:44a 29,937 jakarta-regexp-1.3-dev.jar
    01/25/2002 09:44a 84,854 jdbc-se2.0.jar
    01/25/2002 09:44a 6,727 jdbc2_0-stdext.jar
    01/25/2002 09:44a 98,496 jndi-1.2.1.jar
    01/25/2002 09:44a 17,619 jta1.0.1.jar
    01/25/2002 09:44a 97,382 junit-3.2.jar
    01/25/2002 09:44a 152,037 log4j-1.1.jar
    01/25/2002 09:44a 280,984 mail-1.2.jar
    01/25/2002 09:44a 109,927 mm.mysql-2.0.4.jar
    01/25/2002 09:44a 76,734 oro.jar
    01/25/2002 09:44a 194,500 postgresql.jar
    01/25/2002 09:44a 4,041 README.txt
    01/25/2002 09:44a 208,635 sapdbc.jar
    02/13/2002 11:21a 216,879 STT.jar
    02/08/2002 12:15p 707,897 turbine-2.2b1.jar
    01/25/2002 09:44a 369,494 velocity-1.2-dev.jar
    01/25/2002 09:44a 31,326 village-1.5.1.jar
    01/25/2002 09:44a 436,094 xalan-1.2.1.jar
    01/25/2002 09:44a 840,704 xerces-1.3.0.jar
    01/25/2002 09:44a 47,926 xmlrpc.jar
    26 File(s) 6,050,184 bytes
    2 Dir(s) 29,539,246,080 bytes free
    When I run the server, only these files are put in the tmp_war
    directory:
    Volume in drive C has no label.
    Volume Serial Number is 641F-B7A0
    Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\_t
    mp_war_myserver_myserver_garyapp\WEB-INF\lib
    02/15/2002 12:31p <DIR> .
    02/15/2002 12:31p <DIR> ..
    02/15/2002 12:31p 1,124,276 classes1263855.jar
    02/15/2002 12:31p 175,666 hsql63856.jar
    02/15/2002 12:31p 76,964 httpunit63857.jar
    02/15/2002 12:31p 236,041 idb63858.jar
    02/15/2002 12:31p 6,727 jdbc2_0-stdext63859.jar
    02/15/2002 12:31p 76,734 oro63860.jar
    02/15/2002 12:31p 194,500 postgresql63861.jar
    02/15/2002 12:31p 208,635 sapdbc63862.jar
    02/15/2002 12:31p 216,879 STT63863.jar
    02/15/2002 12:31p 47,926 xmlrpc63864.jar
    10 File(s) 2,364,348 bytes
    2 Dir(s) 29,539,078,144 bytes free
    It's not only that the files don't show up, of course: if I run the
    system and it makes references to the files, I get a
    ClassNotFoundException:
    <Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
    <[WebAppServletContext(7243997,gar
    yapp,/garyapp)] Error loading servlet: "garyapp"
    java.lang.ClassNotFoundException: org.apache.turbine.Turbine
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:179)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
    areClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
    areClassLoader.java:43)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
    mpl.java:583)
    at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
    java:368)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:200)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:2495)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2204)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
    >
    <Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
    <[WebAppServletContext(7243997,gar
    yapp,/garyapp)] Servlet failed with ServletException
    javax.servlet.ServletException: Servlet class:
    'org.apache.turbine.Turbine' coul
    d not be loaded - the requested class wasn't found in the classpath:
    'C:\bea\wl
    server6.1\config\mydomain\applications\garyapp;C:\bea\wlserver6.1\.\config\mydom
    ain\applications\garyapp\WEB-INF\classes;C:\bea\wlserver6.1\.\config\mydomain\ap
    plications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\classe
    s1263855.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_
    tmp_war_myserver_myserver_garyapp\WEB-INF\lib\hsql63856.jar;C:\bea\wlserver6.1\.
    \config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp
    \WEB-INF\lib\httpunit63857.jar;C:\bea\wlserver6.1\.\config\mydomain\applications
    \garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\idb63858.jar;C:\
    bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver
    myservergaryapp\WEB-INF\lib\jdbc2_0-stdext63859.jar;C:\bea\wlserver6.1\.\confi
    g\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-I
    NF\lib\oro63860.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WE
    B-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\postgresql63861.jar;C:\bea\
    wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_mys
    erver_garyapp\WEB-INF\lib\sapdbc63862.jar;C:\bea\wlserver6.1\.\config\mydomain\a
    pplications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\STT63
    863.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_w
    ar_myserver_myserver_garyapp\WEB-INF\lib\xmlrpc63864.jar'
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
    mpl.java:594)
    at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
    java:368)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:200)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:2495)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2204)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
    >--
    Michael Young
    Developer Relations Engineer
    BEA Support

  • WLS 8.1 SP4 and web-inf/lib ClassNotFoundExceptions

    Hi
    Is anyone else having problems with this issue ?
    I saw it was resolved (CR161884 & CR173695) in the 8.1 SP3 release, but I'm unable to deploy a web app (either through the console or in the applications directory of the domain) in SP4 as the classloader can't see my JAR file in WEB-INF/lib.
    <30-Dec-2004 15:51:47 o'clock GMT> <Error> <Deployer> <BEA-149201> <Failed to co
    mplete the deployment task with ID 7 for the application appsdirdp-application
    -1.0-SNAPSHOT_war.
    weblogic.management.DeploymentException:
    Exception:weblogic.management.ApplicationException: start() failed.
            Module: dp-application-1.0-SNAPSHOT     Error: weblogic.management.Deplo
    ymentException: org/picocontainer/gems/StaticFactory - with nested exception:
    [java.lang.NoClassDefFoundError: org/picocontainer/gems/StaticFactory]Inside my WAR file, I have a WEB-INF\lib directory, containing picocontainer-gems-1.1-SNAPSHOT.jar which contains the org.picocontainer.gems.StaticFactory class.
    I've tried deploying the app both with and without a weblogic.xml file declaring prefer-web-inf-classes set to true.
    Rgs
    Erik

    Just as a check, I moved the JAR files to a common lib directory on the server and added them to the system classpath specified in startWeblogic.cmd, and the application starts fine.
    Maybe not related, but yesterday I was tried deploying an EJB that was dependent on a JAR file NOT included within its JAR file, but specified with the Class-path entry in the manifest.
    The behaviour I saw was WLS swallowed the ClassNotFoundException silently, the admin console reported that the EJB was deployed successfully but inside the ejbCreate method - I had two print line statements, one prior to calling the missing class, and one after. Only the one prior appeared on the system console, suggesting that the ejbCreate method wasn't completing, yet no exception is thrown ?

  • Working with tag-library which is packed in WEB-INF\lib\jar-file.jar:

    Hi,
    When importing a webworks war file, which contains default taglib.tld in the webworks.jar which is packed in /Web-Inf/lib/webworks.2.1.7.jar the war file.
    I am getting following error while running the jsp.
    Error(6): duplicated tag definitions within the same TLD: text
    Error(6): java.lang.NullPointerException
    Error(6): Unable to load taghandler class: /webwork
    Line which points to Errors is "<%@ taglib prefix="ww" uri="/webwork" %>"
    But, There is a taglib.tld in /Web-Inf/lib/webworks.2.1.7.jar!\meta-inf\tablib.tld
    which mentions uri as
    <taglib>
    <tlib-version>2.2.1</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>WebWork Taglib</short-name>
    <uri>/webwork</uri>
    </taglib>
    But, There is no following entry for '/webwork' (uri) in web.xml
    Same war is working fine in tomcat webserver.
    Can anybody explain me how to work with this kind of a setup, where taglib is packed in some jar which is packed in Web-Inf/lib dir.
    Thanks,
    Siva

    I found the problem. The web-app was finding the class in the APP-INf/lib. But the problem was being caused due to a reference to another class that was being loaded by the webapp classloader which was not visible to the class inside the common jar. The solution was to make sure both classes were being loaded by one class loader.
    Thanks anyway
    Sameet

  • Wl6.1sp2 can't find classes in WEB-INF/lib

              Hi,
              I meet a very strange problem.
              I use struts in my application.so I put struts.jar in web-inf/lib.
              In the .war file, the struts.jar can be found under web-inf/lib.
              my servlet configuration in web.xml is:
              <servlet>
              <servlet-name>action</servlet-name>
              <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
              <init-param>
              <param-name>application</param-name>
              <param-value>StrutsProperties</param-value>
              </init-param>
              <init-param>
              <param-name>config</param-name>
              <param-value>/WEB-INF/struts-config.xml</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
              </servlet>
              when this .war file is deploy, the console not show any error message.
              then,when i visit a jsp page that has a <html:form> tag, the console will show
              the error below:
              <Error> <HTTP> <[WebAppServletContext(5418530,struts,/
              struts)] Servlet failed with Exception
              java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
              at java.lang.ClassLoader.defineClass0(Native Method)
              at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
              at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
              1)
              at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
              at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
              at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
              at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
              areClassLoader.java:43)
              at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:120)
              at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:563)
              at jsp_servlet.__logon._jspService(__logon.java:137)
              at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:265)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:304)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:200)
              at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
              rvletContext.java:2495)
              at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
              pl.java:2204)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              >
              note "org/apache/struts/action/ActionForm" can be found when i open struts.jar
              in web-inf/lib
              why weblogic can't find this class but can find the "org.apache.struts.action.ActionServlet",
              these 2 classes should all be located in struts.jar
              i used it in win2k,so i think it may not be connect with case sensitive.
              Any one can give me some help or a link I did not found in this group.
              Thanks
              

              1.the struts-html.tld is in web-inf directory
              2.this is part of the web.xml
              ===========
              <taglib>
              <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
              <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
              </taglib>
              <taglib>
              <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
              <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
              </taglib>
              <taglib>
              <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
              <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
              </taglib>
              <taglib>
              <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
              <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
              </taglib>
              ================
              "Deepak Vohra" <[email protected]> wrote:
              >
              >Are the tld files including the struts-html.tld in the web-inf directory
              >& specified in the web.xml deployment descriptor?
              >
              >thanks,
              >
              >Deepak
              >
              >
              >"erric_sarra" <[email protected]> wrote:
              >>
              >>Hi,
              >>I meet a very strange problem.
              >>
              >>I use struts in my application.so I put struts.jar in web-inf/lib.
              >>In the .war file, the struts.jar can be found under web-inf/lib.
              >>
              >>my servlet configuration in web.xml is:
              >> <servlet>
              >> <servlet-name>action</servlet-name>
              >> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
              >> <init-param>
              >> <param-name>application</param-name>
              >> <param-value>StrutsProperties</param-value>
              >> </init-param>
              >> <init-param>
              >> <param-name>config</param-name>
              >> <param-value>/WEB-INF/struts-config.xml</param-value>
              >> </init-param>
              >> <load-on-startup>1</load-on-startup>
              >> </servlet>
              >>
              >>when this .war file is deploy, the console not show any error message.
              >>then,when i visit a jsp page that has a <html:form> tag, the console
              >>will show
              >>the error below:
              >><Error> <HTTP> <[WebAppServletContext(5418530,struts,/
              >>struts)] Servlet failed with Exception
              >>java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
              >> at java.lang.ClassLoader.defineClass0(Native Method)
              >> at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
              >> at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
              >>1)
              >> at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
              >> at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
              >> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
              >> at java.security.AccessController.doPrivileged(Native Method)
              >> at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
              >> at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
              >> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
              >> at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
              >> at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
              >> at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
              >> at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
              >>areClassLoader.java:43)
              >> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
              >> at java.lang.Class.forName0(Native Method)
              >> at java.lang.Class.forName(Class.java:120)
              >> at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:563)
              >> at jsp_servlet.__logon._jspService(__logon.java:137)
              >> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              >>pl.java:265)
              >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              >>pl.java:304)
              >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              >>pl.java:200)
              >> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
              >>rvletContext.java:2495)
              >> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
              >>pl.java:2204)
              >> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              >> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              >>>
              >>
              >>note "org/apache/struts/action/ActionForm" can be found when i open
              >struts.jar
              >>in web-inf/lib
              >>why weblogic can't find this class but can find the "org.apache.struts.action.ActionServlet",
              >>these 2 classes should all be located in struts.jar
              >>
              >>i used it in win2k,so i think it may not be connect with case sensitive.
              >>
              >>Any one can give me some help or a link I did not found in this group.
              >>
              >>Thanks
              >>
              >>
              >
              

  • Please help.! Problem with locating classes within Jars under WEB-INF/lib.

    Hi All,
    I have a problem which you guys would have faced already...Here it goes..
    I'm using OC4J 10.1.3.0 and use ADF for my web page. I have a controller class which refers to JSF/ADF APIs and this class is archived as a jar file and put under WEB-INF/lib, Also, all the classes related to JSF/ADF are available under the same WEB-INF/lib folder.
    When I invoke my page, the controller class is getting called but it throws NoClassDefFound Error for the ADF based class. i mean, these ADF/JSF classes are not getting found when my jar class is placed within WEB-INF/lib. However, when i extract my jar into WEB-INF/classes, it works.
    I'm sure, i miss some entry for classpath somewhere. Can any one please point me to right direction...?
    Thanks
    Rajasekaran

    Hello,
    I do not have a direct answer to your question, but could you try the ClassLoader query tools to see if your classes/jar are loaded by the applications:
    - Using Queries to Troubleshoot Class Loading Issues
    Regards
    Tugdual Grall

  • MySql driver not found in WEB-INF/lib

    Hello
    This topic is very often met on this forum but there are no
    suitable answers for the problem I have. I am creating
    a Jsf application and I have setup a connection pool using
    the MySql jar. I want to supply the jar with the war and I keep
    it in WEB-INF/lib directory but I still get ClassNotFoundException.
    I am running this on a Debian machine with Sun JVM 1.5,
    Tomcat 5.0, Mysql 4.1, Connector/J - nightly build from
    20060403 (since the stable version has bugs with Charset).
    Here are the confings. If I missed some of them, pleaste tell
    me.
    War task in build.xml
        <target name="war" depends="build">
          <mkdir dir="${build.dir}"/>
          <war
            basedir="${webroot.dir}"
            warfile="${build.dir}/${project.distname}.war"
            webxml="${webinf.dir}/web.xml">
            <metainf dir="${meta.dir}">
              <include name="context.xml"/>
            </metainf>
            <exclude name="WEB-INF/${build.dir}/**"/>
            <exclude name="WEB-INF/src/**"/>
            <exclude name="WEB-INF/web.xml"/>
          </war>
        </target>
    context.xml
    <Context  path="/jsfblog" docBase="jsfblog.war" reloadable="false" crossContext="true" useNaming="true">
      <Resource name="jdbc/jsfblog" auth="Container" type="javax.sql.DataSource"/>
      <ResourceParams name="jdbc/jsfblog">
        <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
        <parameter>
          <name>url</name>
          <value>jdbc:mysql://localhost/jsfblog</value>
        </parameter>
        <parameter>
          <name>driverClassName</name><value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
          <name>username</name>
          <value>blog</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>blog</value>
        </parameter>
        <parameter>
          <name>maxWait</name>
          <value>3000</value>
        </parameter>
        <parameter>
          <name>maxIdle</name>
          <value>100</value>
        </parameter>
        <parameter>
          <name>maxActive</name>
          <value>10</value>
        </parameter>
      </ResourceParams>
    </Context>
    hibernate.cfg.xml
    <hibernate-configuration>
        <session-factory>
            <property name="connection.datasource">java:comp/env/jdbc/jsfblog</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="current_session_context_class">thread</property>
            <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
            <property name="show_sql">true</property>
            <mapping resource="......"/>
        </session-factory>
    </hibernate-configuration>
    web.xml
    I am not sure if I really need this.
    <web-app>
      <!-- Connection pool configuration  -->
      <resource-ref>
        <description>JSF Blog Database</description>
        <res-ref-name>jdbc/jsfblog</res-ref-name>
        <res-ref-type>javax.sql.DataSource</res-ref-type>
        <res-auth>Container</res-auth>
      </resource-ref>
      <!--  jsf and facelets declarations  -->
    jsfblog.policy
    Not all the rules apply at the same time. I also tried to
    setup the mysql jar in ${catalina.home}/common/lib
    directory and it was loaded but I need to make it work
    in WEB-INF/lib location.
    grant
         permission java.io.FilePermission "${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1.12-bin.jar", "read";
         permission java.io.FilePermission "${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1-nightly-20060403-bin.jar", "read";
         permission java.net.SocketPermission "localhost:3306", "connect,resolve";
    grant codeBase "jar:file:${catalina.home}/webapps/jsfblog/WEB-INF/lib/hibernate3.jar!/-" {
         permission java.lang.RuntimePermission "accessDeclaredMembers";
         permission java.util.PropertyPermission "*", "read,write";
         permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    grant codeBase "jar:file:${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1-nightly-20060403-bin.jar!/-"
         permission java.net.SocketPermission "localhost:3306", "connect,resolve";
         permission java.lang.RuntimePermission "accessDeclaredMembers";
         permission java.util.PropertyPermission "*", "read,write";
         permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    Project layout
    |-- build
    |   `-- jsfblog.war
    |-- build.xml
    |-- conf
    |   `-- 99jsfblog.policy
    |-- deploy
    |   `-- jsfblog.war
    |-- doc
    |   |-- WEB-INF
    |   |   |-- classes
    |   |   |   |-- beans
    |   |   |   |   `-- CategoryBean.class
    |   |   |   |-- blog
    |   |   |   |   |-- Category.class
    |   |   |   |   |-- Category.hbm.xml
    |   |   |   |   |-- Comment.class
    |   |   |   |   |-- Comment.hbm.xml
    |   |   |   |   |-- Post.class
    |   |   |   |   `-- Post.hbm.xml
    |   |   |   |-- hibernate.cfg.xml
    |   |   |   |-- log4j.properties
    |   |   |   `-- util
    |   |   |       |-- HibernateSessionFactory.class
    |   |   |       |-- HibernateUtil.class
    |   |   |       `-- Service.class
    |   |   |-- faces-config.xml
    |   |   |-- lib
    |   |   |   |-- antlr-2.7.5.jar
    |   |   |   |-- asm-attrs.jar
    |   |   |   |-- asm.jar
    |   |   |   |-- cglib-2.1.3.jar
    |   |   |   |-- common-annotations.jar
    |   |   |   |-- commons-beanutils.jar
    |   |   |   |-- commons-collections-2.1.1.jar
    |   |   |   |-- commons-digester.jar
    |   |   |   |-- commons-lang.jar
    |   |   |   |-- commons-logging-1.0.4.jar
    |   |   |   |-- commons-validator.jar
    |   |   |   |-- dom4j-1.6.1.jar
    |   |   |   |-- el-api.jar
    |   |   |   |-- el-ri.jar
    |   |   |   |-- hibernate3.jar
    |   |   |   |-- jsf-api.jar
    |   |   |   |-- jsf-facelets.jar
    |   |   |   |-- jsf-impl.jar
    |   |   |   |-- jsf-tlds.jar
    |   |   |   |-- jstl.jar
    |   |   |   |-- jta.jar
    |   |   |   |-- log4j-1.2.11.jar
    |   |   |   |-- mysql-connector-java-3.1-nightly-20060403-bin.jar
    |   |   |   `-- standard.jar
    |   |   `-- web.xml
    |   |-- admin
    |   |   |-- admintemplate.xhtml
    |   |   |-- category.xhtml
    |   |   |-- index.xhtml
    |   |   `-- skeleton.xhtml
    |   |-- index.jsp
    |   `-- layout.css
    |-- lib
    |   `-- servlet.jar
    |-- meta
    |   `-- context.xml
    `-- src
        |-- beans
        |   `-- CategoryBean.java
        |-- blog
        |   |-- Category.hbm.xml
        |   |-- Category.java
        |   |-- Comment.hbm.xml
        |   |-- Comment.java
        |   |-- Post.hbm.xml
        |   `-- Post.java
        |-- hibernate.cfg.xml
        |-- log4j.properties
        `-- util
            `-- HibernateUtil.javaAnd, finally, the error message:
    Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
         at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
         at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Class.java:164)
         at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760)
         ... 60 moreI don't really understand how I can setup the CLASSPATH in this
    context. So there should be something else. Does anyone have an
    idea?
    Thanks.
    Igor

    This is what I achived using the <metainf> tags from
    war task in build.xml. Look at the first code
    listing. The
    magic code is:
    <metainf dir="${meta.dir}">
    <include name="context.xml"/>
    </metainf>where ${meta.dir} is defined as ./meta and there
    resides
    the context.xml file (look at the project layout).Very good, thanks.
    Any guesses why Tomcat is not loading mysql jar from
    WEB-INF/lib directory?No. 8(
    My understanding is that JARs in the WEB-INF/lib are visible only to your web app. Those in /common/lib are visible to all apps and the container. Those in /server/lib are visible only to the container and no apps. It SHOULD work from WEB-INF/lib. I've done it that way, but it was an older version of Tomcat.
    Checked the Tomcat docs. They say to put it in /common/lib, but they don't explicitly forbid it in WEB-INF/lib.
    I'll try a simpler example.
    %

  • Is there a restriction on loading "javax" classes from WEB-INF/lib?

    I'm having trouble with a webapp in WL 10MP1 that is having trouble loading classes from the "jsr311-api-1.0.jar" in my WEB-INF/lib. Even though I have no trouble with it in Eclipse (no compile errors), classes from that jar fail with "NoClassDefFound" exceptions. I have a feeling it might be the fact that the packages in that jar start with "javax". Assuming that's the case, is there anything I can do to fix this?
    What's even stranger is that the errors I get are when I try to load them directly from the Spring context. However, if I remove the test references to those classes, there's other code that loads those classes later in the application startup (after the Spring context finishes loading), and they load perfectly fine (I turned on verbose class loading to verify this).

    Note that I've tried two other strategies that both result in the same failed state.
    I tried putting the "jsr311-api-1.0.jar" in $JDK_HOME/jre/lib/ext, but that causes a failure to find Spring classes. I then copied the "spring.jar" into $DOMAIN_HOME/lib, and then it fails to find CXF classes. After doing the same with "cxf-2.2.3.jar", it then fails to find "javax.servlet.ServletContextListener", which clearly tells me there's no benefit to this approach.
    Similarly, I tried copying the jars into $DOMAIN_HOME/lib, and that fails to find "org.apache.commons.logging.LogFactory". I could continue down this path, but it doesn't seem likely to succeed. Eventually, I'll get to a point where it just can't find the classes specific to my application, which I certainly can't copy into $DOMAIN_HOME/lib.
    The first basic problem is that I can't put anything into a higher-level classloader that will eventually reference classes in a lower-level classloader, because references can only go up the chain, and the second problem is that WebLogic appears to ignore classes in WEB-INF/lib in the "javax.*" packages. I think there might be an exception for "javax.xml.*", but not for other subpackages. I tried adding a "prefer-application-packages" clause to my weblogic-application.xml file, but that had no effect.

  • WEB-INF/lib (.war) Vs META-INF/MANIFEST.MF (.ear)

    What are the Class loading differences between libraries that are in a web application web-inf/lib and that are in class-path entry of META-INF/manifest.mf of a ear.
    I recently developed a web services application with a ejb endpoint.Then
    packaged it in a ear file with the classpath entry .The problem occured when I placed the weblogic.jar(and other third party jars) in the ear file which my ejb.jar uses as utility jar's. Jboss starts behaving weird.Some of the classes of jboss are overwritten and class cast exception errors started coming up.
    Overnight I changed the application to a servlet end point and placed all my jars in the WEB-INF/lib then everything started working smooth.
    Can any body help me , understand what is happening. Why doesn't j2ee have something like META-INF/lib

    What did you do to resolve this issue .. I'm having the exact same problem.
    What a nightmare.
    I found approximately 40 forums on this topic (and
    there are probably more), but noone has the definitive
    answer!
    Here's the problem....
    My servlet uses a utility class that resides in some
    other jar. That jar is then placed into the
    WEB-INF\lib directory of the WAR which in turn goes
    into the EAR. This is supposed to be all that is
    needed in order for the utility class to be found on
    the classpath.
    In fact, if you run the war in Tomcat as a standalone
    WAR it does in fact find it.... its when in an EAR
    deloployed to app server that the problem arises.
    I have had no luck with using any combination of
    putting the jar ANYWHERE in the EAR or WAR no matter
    if I specify the Class-Path: in the manifest(s) or
    not.
    I thought maybe that I was missing some config in the
    application.xml or web.xml but I couldn't find
    anything to support that.
    Maybe its dependent on the app server? I am using
    Orion, but the same problem can be found on J2EE RI
    release 1.3
    Work arounds:
    1. Simply put the utility jar in the lib directory of
    the server you're using
    2. Add an ejb module to the application.xml naming the
    utility jar as the ejb jar. Of course this is NOT an
    EJB jar and error messages/warnings will appear
    accordingly, but on Orion at least, it will load the
    classes needed... hooray!!
    Anyone got a definitive answer?

  • WAR: making executable with reference to lib in WEB-INF/lib?

    I have a custom library (jar file) with a manifest to show version infos when started/double cliked. this works quite good. this jar file is now part of a bigger war file. now, i want to double click the war file to show the version info. i already added a manifest to the war file and double clicking works as expected but the (main) class is not found. i tried to add WEB-INF/lib/mylib.jar to the manifest Class-Path: entry, but that doesn't work. is there a way to tell the manifest, that it should look in the war's web-inf/lib subdirectory to look for classes? or is this an approach that couldn't be solved?

    My first reaction here is to say you shouldn't do that. It seems to me that you're just asking for trouble when you start modifying the manifest class path of your WAR to try and make it an executable war - if you do succeed you might end up not being able to have the thing function as a WAR.
    but that aside, I don't think (I've not tested/invistigated this very much) that you can access classes contained withing jars that are themselves contained within a jar without doing some sort of custom classloader craziness - and if you have to go down that route then you definitely don't want t o muck up your WAR like that.
    I suggest that you create a Servlet (or Struts action, or whatever you have going on) such that when you hit that via a JSP (possibly protected via some sort of security) you get the results of your versioning method dumped out on your browser. That would be more "natural" and go with the Zen of the technology you're using.
    Good Luck
    Lee

  • EAR has WAR has JAR in WEB-INF\lib NoClassDefFoundError

    What a nightmare.
    I found approximately 40 forums on this topic (and there are probably more), but noone has the definitive answer!
    Here's the problem....
    My servlet uses a utility class that resides in some other jar. That jar is then placed into the WEB-INF\lib directory of the WAR which in turn goes into the EAR. This is supposed to be all that is needed in order for the utility class to be found on the classpath.
    In fact, if you run the war in Tomcat as a standalone WAR it does in fact find it.... its when in an EAR deloployed to app server that the problem arises.
    I have had no luck with using any combination of putting the jar ANYWHERE in the EAR or WAR no matter if I specify the Class-Path: in the manifest(s) or not.
    I thought maybe that I was missing some config in the application.xml or web.xml but I couldn't find anything to support that.
    Maybe its dependent on the app server? I am using Orion, but the same problem can be found on J2EE RI release 1.3
    Work arounds:
    1. Simply put the utility jar in the lib directory of the server you're using
    2. Add an ejb module to the application.xml naming the utility jar as the ejb jar. Of course this is NOT an EJB jar and error messages/warnings will appear accordingly, but on Orion at least, it will load the classes needed... hooray!!
    Anyone got a definitive answer?

    What did you do to resolve this issue .. I'm having the exact same problem.
    What a nightmare.
    I found approximately 40 forums on this topic (and
    there are probably more), but noone has the definitive
    answer!
    Here's the problem....
    My servlet uses a utility class that resides in some
    other jar. That jar is then placed into the
    WEB-INF\lib directory of the WAR which in turn goes
    into the EAR. This is supposed to be all that is
    needed in order for the utility class to be found on
    the classpath.
    In fact, if you run the war in Tomcat as a standalone
    WAR it does in fact find it.... its when in an EAR
    deloployed to app server that the problem arises.
    I have had no luck with using any combination of
    putting the jar ANYWHERE in the EAR or WAR no matter
    if I specify the Class-Path: in the manifest(s) or
    not.
    I thought maybe that I was missing some config in the
    application.xml or web.xml but I couldn't find
    anything to support that.
    Maybe its dependent on the app server? I am using
    Orion, but the same problem can be found on J2EE RI
    release 1.3
    Work arounds:
    1. Simply put the utility jar in the lib directory of
    the server you're using
    2. Add an ejb module to the application.xml naming the
    utility jar as the ejb jar. Of course this is NOT an
    EJB jar and error messages/warnings will appear
    accordingly, but on Orion at least, it will load the
    classes needed... hooray!!
    Anyone got a definitive answer?

Maybe you are looking for