I am doing some basic spring stuff and stuck at some point.
I am getting ClassNotFoundException whenever I deploy my application on Tomcat.
I observed that the jars are not copied to Tomcats lib folder.
When I copied the jars manually to Tomcats lib folder it works fine.
Please let me know if I am making any blunder.
PS - I am using Spring tool suite 2.6.0,Tomcat 6 and its a Maven project.
Thanks.
Go to "Project properties -> Deployment Assembly page".
This page describes how your application will be packaged for deployment or export. And added new source "Maven dependency".
From Deployment Assembly page, Click Add... button
Then select "Java Build Path Entries"
"Maven dependency" should be in the list
It solves the issue and all jar got copied to tomcat
If you define "war" packaging for your maven project then your dependent libraries should be automatically copied to the WEB-INF/lib directory of the created .war file by the Maven WAR plugin.
Put your jars in the WEB-INF/lib directory:
In Project properties -> Deployment Assembly you should have a Source of /web with a Deployment Path of /. If this is there then any jars in the web/WEB-INF/lib directory will get deployed and picked up by the class loader. Note that sub-directories will not be picked up though, so put your jars directly in the lib directory.
You run three command in cmd or bash(where your pom.xml file placed) to get jar file and copy it into your WEB-INF/lib folder
mvn compile
mvn package
mvn install
I find only this way for resolved my problem:
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
Related
I am getting error below when I deploy my project in tomcat:
java.lang.ClassNotFoundException: org.apache.log4j.rolling.RollingFileAppender
It was due to missing of apache-log4j-extras-1.0.jar library. So I add the required jar files into my build path like the screenshot below:
I refresh and clean the project, and try to deploy again, but still didn't see the log4j and guava in my WEB-INF/lib folder under tomcat webapps. If I copy and paste the jars into WEB-INF/lib folder it will works, no error. But I don't want to copy paste each time I re-deploy the project. Please help.
Below is the maven project structure I have in eclipse:
And the deployment assembly configuration is as shown below:
If I package the war with maven command (mvn clean package) and deploy the war on tomcat, the "resource" folder under WEB-INF is not getting created as I mentioned in deployment assembly configuration.
The server side folder structure created after deployment is as in the image below:
But, if I export the war from eclipse "Right click on project -> Export -> War file" and deploy in tomcat, it is creating the "resources" folder.
Kindly help me with this.
Thanks in advance!!!
If you look at the documentation for the maven-war-plugin here:
maven-war-plugin
You'll see that by default the contents of the "resources" folder gets placed inside the "classes" folder inside the WAR, so for a maven build you should find your resources in there.
Your Eclipse configuration is different, placing the resources in a separate "resources" folder under WEB-INF. Exporting from Eclipse will use this configuration rather than the maven configuration.
I would recommend changing your Eclipse configuration to match the maven one by changing the Deploy Path to "WEB-INF/classes"
I have a maven project loaded in eclipse that when I go to export it as jar, the src/main/resources files always end up in the /resources directory inside the jar. I found a kludge to get around this by putting all my resources in the root directory of the project, but it's getting very messy very fast. Is there any way to configure it so the resources output to root of jar?
you dont export a maven project as jar.
you clean package it and you get the resulting jar at the target folder.
right click the project's pom.xml and run it as maven build.
I am working with Eclipse Luna.
I have a dynamic web project into my workspace: project-web. This project depends on another project into my workspace: project-lib.
So I get this scenario: project-web[:war] ---depends on--> project-lib[:jar]
I have checked "Resolve dependences from workspace projects" option into Properties -> Maven for the web project.
When I run "mvn clean package" for project-web Maven creates war file into the target directory but I have
an issue. If I explode the war file, I find an empty folder called "project-lib" into the WEB-INF/lib directory.
Since the library is empty I get some java exceptions on Tomcat startup.
How to create the war for project-web correctly?
Thanks in advance.
Enrico
I have a java project in eclipse which is having jar file reference of other projects.
Now, I have removed those jar files and added projects in eclipse, no compilation error in eclipse. I have configured Tomcat server in eclipse.
But server doesn't get loaded when i add project instead of jar files.
I have observed following path in eclipse workspace:
<<Eclipse IDE workspace>>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ESW\WEB-INF
under WEB-INF folder, jar files and class files are located. All jar files are loaded to 'jar' but under classes folder no class files are present at this directory. here i am expecting class files of the project which i have added in source folder instead of jar files. how can i do it?
Please try to use the Deployment Assembly option (Project Properties ---> Deployment Assembly ) to configure which files to be deployed to the WTP Tomcat . Before eclipse 3.5 or before , this option is called something likes J2EE Module Dependencies
Deploy path is relative to the your <<Eclipse IDE workspace>>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ESW\ while source path is relative to your project folder.