从命令行运行spring项目

时间:2012-04-12 07:24:24

标签: spring command-line

我在STS中创建了一个Spring项目(spring source tool),它可以在STS中正常工作(编译和执行),但是当我从终端运行类文件时,我收到如下错误:

  

线程“main”中的异常java.lang.NoClassDefFoundError:com / XXXX / XXXX / Operations
  引起:java.lang.ClassNotFoundException:com.XXXX.XXXX.Operations

以下参考是我的.classpath文件:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java" />
<classpathentry kind="src" output="target/test-classes"path="src/test/java" />
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/
org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5" />
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" />
<classpathentry kind="output" path="target/classes" />
<classpathentry exported="true" kind="var" path="M2_REPO" />
</classpath>

2 个答案:

答案 0 :(得分:1)

您的错误表明“Operations.class”文件不在target / classes文件夹中(或者您的包名中有拼写错误)。

首先确保您的课程符合您的期望:

cd [project root]/target/classes
ls com/XXXX/XXXX/Operations.class

如果这证明文件存在,您应该能够使用您提到的java命令:

java com.XXXX.XXXX.Operations

确保最后不添加“.class”,因为Java会假设您正在尝试在“Operations”包中加载名为“class”的文件。

如果文件丢失(我希望它会丢失),您需要在STS(Project - &gt; Build Project)中执行构建以创建它。


更新

您在评论中提到您收到错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

这是一个非常不同的问题,这意味着您没有在java命令中引用Spring库,因此Java不知道在哪里找到它们。

我建议您在尝试运行之前使用STS打包程序。这是Java开发人员构建和部署应用程序的典型方式。 This article提供了一个关于如何执行此操作的简单教程(STS是Eclipse的一种变体)。

添加 - 您的更新问题表明您也在此应用程序中使用Maven,在这种情况下,您可以使用“mvn package”来构建项目而不是Eclipse。阅读本教程以开始使用Maven:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

如果您真的想要在不打包的情况下运行该程序;您需要在命令中引用 ALL 您正在使用的Jar文件(这只是一个示例,将“spring.jar”替换为您正在使用的正确Jar文件):

java -classpath .;../../lib/spring.jar com.XXXX.XXXX.Operations

答案 1 :(得分:0)

通常,人们会创建jar文件,其中包含启动应用程序所需的所有类和资源。之后,它很容易启动应用程序:

java -cp youapp-full.jar  com.XXXX.XXXX.Operations

Operations类必须有主要的课程方法