我正在使用eclipse
来开发和测试spring mvc
应用程序。我在开发过程中经常使用Run as...Run on server
来测试较小的更改。我遇到了ClassNotFound
错误,其解决方案似乎涉及将几个jar移动到tomcat 8
lib
目录中,以便它们在运行时可用。 (包含jar的类在eclipse中的应用程序构建路径中。)将jar移动到tomcat lib
文件夹的问题是在编译时也需要jar。当我将jar
移至$CATALINA_HOME/lib
时,由于jar
位于我的pom.xml
中,我收到错误消息,表明存在重复的广告。但如果我从pom.xml
删除它,eclipse
将无法编译该应用。 如何将jar移动到$ CATALINA_HOME / lib并仍然使用eclipse编译我的应用程序?
我尝试设置<scope>runtime</scope>
和<scope>provided</scope>
,但这些都没有解决问题。以下是我在pom.xml
中的内容:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
编辑#1:
我还尝试将jar
移至tomcat lib
文件夹,然后将jar
添加到buildpath
中的eclipse
作为外部jar
这样我就可以从pom.xml
中删除依赖项,并且仍然可以eclipse
编译应用程序。但是当我这样做时,eclipse
每次尝试Run As..Run on Server
时都会给我以下错误:
Several ports (8080, 8009) required by Tomcat v8.0 Server at localhost are
already in use. The server may already be running in another process, or a
system process may be using the port. To start this server you will need to
stop the other process or change the port number(s).
当然,我转到tomcat bin
文件夹并运行shutdown.sh
,但这并没有阻止新错误。
编辑#2
当我通过点击红色按钮从tomcat
内关闭eclipse
时,eclipse
表示tomcat已停止。但是,当我再次尝试restart tomcat
尝试Run As..Run on Server
时,我会收到上面EDIT#1
中描述的错误。当我完全关闭计算机并重新启动时,会临时解决此错误。然后我可以再次Run As..Run on Server
并重新创建情境。只是现在抛出了一个新的错误。我记录了the new error in a separate posting。但是,每当我尝试连续EDIT#1
次启动以测试代码中的小变化时,我都会从Run As..Run on Server
收到同样的错误消息问题。 因此,当前问题未得到解决,因为将java mail jar
放入tomcat lib
文件夹并使用提供的范围,每次我想要从eclipse
内重新启动应用时,都需要重新启动。< / strong> shutdown.sh
也不起作用。
答案 0 :(得分:1)
you can write lib launch file which you can run on maven install.
Inside launchConfiguration mentioned string attribute like below
<stringAttribute key="M2_GOALS" value="clean package install"/>
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
<booleanAttribute key="M2_OFFLINE" value="false"/>
<stringAttribute key="M2_PROFILES" value=""/>
<listAttribute key="M2_PROPERTIES"/>
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
<intAttribute key="M2_THREADS" value="1"/>
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
<stringAttribute key="M2_USER_SETTINGS" value=""/>
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_45"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace:/Lib}"/>
This will compile all the jar file and put it into lib folder in webapp directory
答案 1 :(得分:0)
好的,我重读了你的帖子,我想我已经钉了它。要杀死该Tomcat实例,请按Eclipse中Console窗口中的红色按钮。 shutdown.sh可能无法关闭它。
根据JAR文件,您需要在Tomcat lib目录和Maven依赖项中使用它们。如果它们是“提供”的,它们将在编译和测试时使用,但不会被部署(这是您所期望的)。然后,您需要将它们复制到tomcat / lib目录中以避免冲突。