facebook

Problem with war file and files in lib directory not found

💡
Our Forums Have Moved

For help with installation, bugs reports or feature requests, please head over to our new forums.
Genuitec Community on GitHub

  1. MyEclipse IDE
  2.  > 
  3. General Development
Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #215646 Reply

    erouse
    Participant

    Windows 2000 5.00.2195 SP4
    Eclipse Platform Version: 3.0.0 Build id: 200406251208
    Eclipse was freshly installed for MyEclipse
    No other external plugins are used
    14 plugins like org.eclipse.pde.* (7 different ones with a 3.0.0 and a 3.0.1 version of each)
    MyEclipse version 3.8.1
    java version “1.4.2_03”
    same as above for App server
    using app server Tomcat 4.1

    Steps:
    Problem 1.
    I create a war file using the deploy as archive. This is a project that was imported from CVS sources and the source code (.java files) is in the WEB-INF/classes directory. When I create the war file, I don’t want the .java files included. Where do I set this? Keeping my source and compiled classes together was one of the features that was in NB that I couldn’t use in Eclipse before. Now I can keep them together during development, I just need to not deploy the .java in the war file.

    Problem 2.
    I deploy the war file to the Tomcat 4.1 webapps directory and it expands correctly, with all of the proper files in the WEB-INF directory. And it finds the struts jars fine. But for some reason it is not finding some of the other jars. I get the following exception using the IDE browser:

    java.lang.UnsatisfiedLinkError: no c2sudm in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)

    Using an external browser, I get this:

    java.lang.NoClassDefFoundError
    at com.comsquared.workflow.web.upo.executors.ManagePackageExecutor.search(ManagePackageExecutor.java:230)
    at com.comsquared.workflow.web.upo.executors.ManagePackageExecutor.execute(ManagePackageExecutor.java:101)
    at com.comsquared.workflow.web.upo.actions.ManagePackageAction.execute(ManagePackageAction.java:47)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:768)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:861)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
    at java.lang.Thread.run(Thread.java:534)

    I have not had this problem in the past with deployments to various app servers using the war file generated by NetBeans. I am unsure of where to start looking for why I am getting this now.

    Eclipse log (<workspace>/.metadata/.log):

    none available

    #215690

    Riyad Kalla
    Member

    Problem 1.
    I create a war file using the deploy as archive. This is a project that was imported from CVS sources and the source code (.java files) is in the WEB-INF/classes directory. When I create the war file, I don’t want the .java files included. Where do I set this? Keeping my source and compiled classes together was one of the features that was in NB that I couldn’t use in Eclipse before. Now I can keep them together during development, I just need to not deploy the .java in the war file.

    The deployment tool does not currently support filtering out of the source files. You will either need to move the source files (highly recommended) into their own source folder, or create an Ant script that makes the WAR file for you. Filtering is an open enhancement for us, but its just not available to our users now.

    Problem 2.
    I deploy the war file to the Tomcat 4.1 webapps directory and it expands correctly, with all of the proper files in the WEB-INF directory. And it finds the struts jars fine. But for some reason it is not finding some of the other jars. I get the following exception using the IDE browser:

    java.lang.UnsatisfiedLinkError: no c2sudm in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)

    This looks like a DLL issue, is that correct? You can adjust the Tomcat 4 > Paths preferences and use the “Append to Library Path” box at the bottom to add the DIR or DLLs themselves to the library path for the app server.

    #215694

    erouse
    Participant

    You are correct, my bad. I forgot that NB used it’s own local Tomcat and that I had to creat this same link over a year ago. Thanks.

    As to moving the source, I currently am unable to do that due to the multiuser nature of development. And I am not an Ant user, at least not knowingly. Do you have an example or a link to one that explains setting up and using an Ant script for this purpose? A tutorial or where/how to look in the help files for the info. I am always open to learning new things.

    And you can add my vote to the filtering enhancement. Thanks.

    #215697

    Riyad Kalla
    Member

    Ant is very straight forward once you get an idea of what you are doing, it truely is the ubiqutous build tool that everyone makes it out to be… I found this from Google: http://www.iseran.com/Java/ant/tutorial/ant_tutorial.html

    Once you get the idea of tasks and such, you want to look into the <war> task, which will create the war file for you. In the war task you will likely setup a sort of file filter saying what files to include, and at this stage you would excluse the .java files from the war file creation step.

    Also an invaluable resource is the Ant docs themselves: http://ant.apache.org/manual/index.html

    And here is a direct link to the war task: http://ant.apache.org/manual/CoreTasks/war.html

    #215926

    erouse
    Participant

    New problem with war file deployment, similar to the last. This time I get

    java.lang.NoClassDefFoundError: com/sun/mail/util/SharedByteArrayInputStream

    when my app trys to send an email. The mail.jar file which contains the class in question is in my WEB-INF directory. I checked the common/lib directory of tomcat and the exact same jar file is there as well. But it picks up the other jar files in the lib directory just fine.

    Can you help me track this down?

    #215930

    Riyad Kalla
    Member

    erouse when you said “The mail.jar file which contains the class in question is in my WEB-INF directory” do you mean exactly that, or that its in your WEB-INF/lib directory? It needs to be in your WEB-INF/lib directory.

    #215945

    erouse
    Participant

    Sorry, mistyped, it is in my WEB-INF/lib directory. And when I said it picked up everything else in the lib directory fine, I meant the WEB-INF/lib directory. I have several custom jars there as well as the Struts jar files and all of those seem to work fine.

    #215950

    Riyad Kalla
    Member

    Ok a few things:
    1) Make sure you are including the jaf JARs that JavaMail needs
    2) Clean out the JAF/JavaMail JARs from your common/lib dir if you don’t need them server wide. No reason to duplicate effort. Otherwise it sounds like things should work fine. DO you see any startup errors in the console?

Viewing 8 posts - 1 through 8 (of 8 total)
Reply To: Problem with war file and files in lib directory not found

You must be logged in to post in the forum log in