将spring jar添加到类路径中

时间:2011-04-22 23:52:35

标签: java netbeans

我有一个netbeans java控制台项目,它使用Spring 3.0(这是一堆罐而不是一个jar)。

当我尝试从命令行执行它时,我得

 Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: com.aosprojects.transportservice.runner.InitialRunner. Program will exit.

如何解决这个问题?

我尝试使用-cp指定包含所有jar的文件夹,如

java -cp libs/spring/* -jar dist/XXXXX.jar

4 个答案:

答案 0 :(得分:1)

如果您正在使用maven构建应用程序,它将在netbeans IDE中运行,但您需要在maven pom.xml中定义一个插件,以便在最终中包含所有必需的.jars。 jar使其可执行。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>yourmainpackagename.YourMainClass</mainClass>
                        </transformer>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.handlers</resource>
                        </transformer>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.schemas</resource>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>

此方法使用maven shade插件。您也可以使用maven程序集插件,准备好面对令人讨厌的错误:p

欢呼声。

答案 1 :(得分:0)

这告诉你正确的方法:

http://javahowto.blogspot.com/2006/06/set-classpath-in-eclipse-and-netbeans.html

右键单击项目,选择属性,然后按照说明操作。添加您需要的所有JAR。

如果它是可执行的JAR,则必须将所有依赖项正确添加到清单中。谷歌提供了如何做到这一点的指导。

答案 2 :(得分:0)

如果您正在使用Netbeans IDE(具有正确的构建路径)进行编译,那么构建工件(jar)并且lib/将位于dist目录中。

进入${project-root}/dist目录,然后运行:

java -jar XXXXX.jar

必须由Netbeans在MANIFEST中处理对库的依赖。

PS:请参阅dist目录中生成的README。

答案 3 :(得分:0)

这是我的目录结构:

〜/下载/
| --libs
--- | --spring
------ | --org.springframework.expression-3.1.0.M1.jar
------ | --org.springframework.context-3.1.0.M1.jar
------ | - 其余的罐子 | --Spring.java

Spring.java的源代码:

import org.springframework.context.ApplicationContext;
public class Spring{ public static void main(String... args){ ApplicationContext ac; System.out.println("Successfully declared reference of type ApplicationContext. Exiting...");}}

导航到〜/ Downloads /并执行以下操作:

javac -cp "libs/spring/*" Spring.java
jar cvfe Spring.jar Spring Spring.class
java -cp ".:libs/spring/*" -jar Spring.jar

<强>输出:

Successfully declared reference of type ApplicationContext. Exiting...