【发布时间】:2015-03-06 00:42:49
【问题描述】:
我正在使用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 添加到eclipse 中的buildpath 作为外部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
当我通过单击红色按钮从eclipse 中关闭tomcat 时,eclipse 表示tomcat 已停止。但是,当我通过再次执行 Run As..Run on Server 尝试 restart tomcat 时,我收到上面 EDIT#1 中描述的错误。当我完全关闭计算机并重新启动时,此错误的临时解决方案就出现了。然后我可以再次执行Run As..Run on Server 并重新创建这种情况。只是现在抛出了一个新错误。我记录了the new error in a separate posting。但是,每次我尝试执行连续的Run As..Run on Server 启动以测试代码中的微小更改时,我都会不断收到来自EDIT#1 的错误消息的相同问题。 所以这个当前的问题没有解决,因为每次我想从eclipse 重新启动应用程序时,将java mail jar 放在tomcat lib 文件夹中并使用提供的范围都需要不可接受的重新启动。 shutdown.sh也不行。
【问题讨论】:
-
我们可以看看堆栈跟踪吗?
-
@AlessandroSantini lemme 重新启动我的机器,看看我是否可以重现错误以获取堆栈跟踪。
-
知道它的eclipse,我感觉你的机器重启可能会解决你的问题。您应该保留您的 maven provided 条目
-
@Angad 请看我上面的编辑#2。谢谢。
-
关于 Edit#1 中描述的错误:您在要运行服务器的端口上运行了一些进程。通过在控制台中执行“netstat -a -b”(以管理员身份运行)找出哪些,然后使用任务管理器杀死正在使用您的端口的进程。
标签: eclipse spring maven spring-mvc tomcat