добавить весеннюю банку в путь к классу - PullRequest
1 голос
/ 23 апреля 2011

У меня есть консольный проект Java NetBeans, который использует Spring 3.0 (который представляет собой набор jar вместо одного 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, чтобы указать папку со всеми банками в ней, например

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

Ответы [ 4 ]

1 голос
/ 23 апреля 2011

Если вы используете maven для создания своего приложения, оно запускается в IDE NetBeans, но вам нужно определить плагин в вашем 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

ура.

0 голосов
/ 23 апреля 2011

Если вы компилируете, используя IDE Netbeans (с правильным путем сборки), тогда артефакт сборки (jar) и lib/ будут в каталоге dist.

перейдите в каталог ${project-root}/dist и затем запустите:

java -jar XXXXX.jar

О зависимости от библиотек в NetBeans уже нужно позаботиться в MANIFEST.

PS: см. Сгенерированный README в каталоге dist.

0 голосов
/ 23 апреля 2011

Вот моя структура каталогов:

~ / downloads /| --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...
0 голосов
/ 23 апреля 2011

Это говорит о том, как правильно это сделать:

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

Щелкните правой кнопкой мыши по проекту, выберите свойства и следуйте инструкциям.Добавьте все необходимые JAR-файлы.

Если это исполняемый JAR-файл, необходимо правильно добавить все зависимости в манифест.Google для инструкций о том, как это сделать и попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...