powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
10 сообщений из 10, страница 1 из 1
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812530
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите склерознику, плз: не могу вспомнить, как сиё лечить.

Скачал примеры к книге: http://manning.com/walls4/sia3-code.zip , распаковал всё в каталог d:\java\sia.

Иду в папку 'D:\JAVA\sia\knights' (это самый первый пример из книжки), ввожу там:
D:\JAVA\sia>mvn package, результат - ОК
вроде бы...
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.springinaction:knights:jar:3.0.0
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ com.springinaction:example-code:3.0.0, D:\JAVA\sia\pom.xml, line 23, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Spring in Action Knights 3.0.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ knights ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ knights ---
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 11 source files to D:\JAVA\sia\knights\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ knights ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\JAVA\sia\knights\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ knights ---
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 1 source file to D:\JAVA\sia\knights\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ knights ---
[INFO] Surefire report directory: D:\JAVA\sia\knights\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.springinaction.knights.BraveKnightTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.75 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ knights ---
[INFO] Building jar: D:\JAVA\sia\knights\target\knights-3.0.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.906 s
[INFO] Finished at: 2014-11-20T21:58:52+04:00
[INFO] Final Memory: 8M/21M
[INFO] ------------------------------------------------------------------------



Теперь надо запустить приложение. Но.. как это сделать ?

Если так: D:\JAVA\sia\knights\target>java -jar knights-3.0.0.jar - то будет вот это:
Код: java
1.
2.
Failed to load Main-Class manifest attribute from
knights-3.0.0.jar

- что логично, т.к. в каталоге этом два класса с main() - KnightAopMain.java & KnightMain.java

Если же вот так:
D:\JAVA\sia\knights\target\classes>java com/springinaction/knights/KnightMain
- то получаю:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com/springinaction/knights/KnightMain.  Program will exit.



Из какого каталога надо запускать, чтобы ApplicationContext увидел класс com/springinaction/knights/KnightMain ??

PS. Все классы спринга скопированы в %JAVA_HOME%\jre\lib\ext:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 Содержимое папки D:\JAVA\JDK6\jre\lib\ext

10.11.2014  23:56              359 017 spring-aop-4.1.2.RELEASE.jar
11.11.2014  00:01               56 736 spring-aspects-4.1.2.RELEASE.jar
10.11.2014  23:55              706 667 spring-beans-4.1.2.RELEASE.jar
10.11.2014  23:56            1 027 457 spring-context-4.1.2.RELEASE.jar
10.11.2014  23:57              178 104 spring-context-support-4.1.2.RELEASE.jar
10.11.2014  23:55            1 005 757 spring-core-4.1.2.RELEASE.jar
10.11.2014  23:56              258 992 spring-expression-4.1.2.RELEASE.jar
10.11.2014  23:56                7 243 spring-instrument-4.1.2.RELEASE.jar
11.11.2014  00:01               10 459 spring-instrument-tomcat-4.1.2.RELEASE.jar
10.11.2014  23:56              426 512 spring-jdbc-4.1.2.RELEASE.jar
11.11.2014  00:01              268 867 spring-jms-4.1.2.RELEASE.jar
10.11.2014  23:58              287 869 spring-messaging-4.1.2.RELEASE.jar
10.11.2014  23:58              375 983 spring-orm-4.1.2.RELEASE.jar
10.11.2014  23:57               82 233 spring-oxm-4.1.2.RELEASE.jar
11.11.2014  00:01              502 440 spring-test-4.1.2.RELEASE.jar
10.11.2014  23:56              252 372 spring-tx-4.1.2.RELEASE.jar
10.11.2014  23:57              711 922 spring-web-4.1.2.RELEASE.jar
11.11.2014  00:00              780 415 spring-webmvc-4.1.2.RELEASE.jar
11.11.2014  00:00              176 814 spring-webmvc-portlet-4.1.2.RELEASE.jar
11.11.2014  00:01              386 638 spring-websocket-4.1.2.RELEASE.jar
              20 файлов      7 862 497 байт
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812538
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozzmosis,

Нельзя никаких либ пхать в JRE. Это чревато неожиданными косяками в будущем.
Используйте сlasspath
Либо java -classpath libs/*.jar;application.jar MainClassName

Либо java -jar application.jar. Но тогда Main-Class и Class-Path должны быть прописаны в META-INF/manifest.mf внутри jar. Maven это умеет простыми настройками.
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812545
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczozzmosis,

Нельзя никаких либ пхать в JRE. Это чревато неожиданными косяками в будущем.
Используйте сlasspath
Либо java -classpath libs/*.jar;application.jar MainClassName

Либо java -jar application.jar. Но тогда Main-Class и Class-Path должны быть прописаны в META-INF/manifest.mf внутри jar. Maven это умеет простыми настройками.

Всё равно не взлетает :(
Вот как пробую:
Код: java
1.
2.
3.
4.
D:\JAVA\sia\knights\target\classes>dir *.jar | findstr ".jar"
20.11.2014  21:58                8 721 knights-3.0.0.jar // это то, что создалось мавном

D:\JAVA\sia\knights\target\classes>java -classpath D:/JAVA/spring412/libs/*.jar;./knights-3.0.0.jar com/springinaction/knights/KnightMain


Получаю:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com/springinaction/knights/KnightMain.  Program will exit.




Но класс этот, KnightMain, - точно есть:
Код: java
1.
2.
3.
D:\JAVA\sia\knights\target\classes>dir com\springinaction\knights\knightmain.class | findstr ".class"
 Содержимое папки D:\JAVA\sia\knights\target\classes\com\springinaction\knights
20.11.2014  21:58                  899 KnightMain.class



И в нём точно есть main():
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
C:\>type D:\JAVA\sia\knights\src\main\java\com\springinaction\knights\KnightMain.java
package com.springinaction.knights;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class KnightMain {
  public static void main(String[] args) {
    ApplicationContext context =
        new ClassPathXmlApplicationContext("knights.xml"); //<co id="co_loadKnightContext"/>

    Knight knight = (Knight) context.getBean("knight"); //<co id="co_getBeanKnight"/>

    knight.embarkOnQuest();//<co id="co_useKnight"/>
  }
}
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812578
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классы разделяет точка:
Код: plaintext
java пакет.Класс
Слэш разделяет только пути к файлам:
Код: plaintext
javac -d bin -cp bin src/пакет/Класс.java
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812596
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

спс за наводку - я и в самом деле забыл про это.
Только теперь две новости, "одна плохая, вторая - загадочная" :-)
1) не взлетает, собака;
2) выдаёт теперь что-то новенькое, про LogFactory :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
D:\JAVA\sia\knights\target\classes>java -classpath D:/JAVA/spring412/libs/*.jar;./knights-3.0.0.jar com.springinaction.k
nights.KnightMain
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
        at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:154)
        at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:215)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicati
onContext.java:88)
        at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableCon
figApplicationContext.java:58)
        at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:6
1)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java
:136)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java
:83)
        at com.springinaction.knights.KnightMain.main(KnightMain.java:8)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
        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 sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 8 more

D:\JAVA\sia\knights\target\classes>



Но это так только в cmd.exe! А в far'e же почему-то:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
D:\JAVA\sia\knights\target\classes>/libs/*.jar;./knights-3.0.0.jar com.springinaction.knights.KnightMain
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(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com.springinaction.knights.KnightMain.  Program will exit.



Хотя переменные окружения, относящиеся к java (java_home, m2, m2_home, classpath), сценарий загрузки ФАРа не меняет. Бред какой-то... %-)

Ткните носом, куда дальше рыть, что ему еще подсунуть надо ?
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38812701
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozzmosis,

В списке ваших либо commons-logging отсутствует. Хватит страдать херней. Начните изучать Maven. Одних только Spring библиотек не достаточно. Есть куча других библиотек, которые spring использует.
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38813728
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczozzmosis,

В списке ваших либо commons-logging отсутствует. Хватит страдать херней. Начните изучать Maven. Одних только Spring библиотек не достаточно. Есть куча других библиотек, которые spring использует.
Подсунул ему org-apache-commons-logging.jar - взлетело наконец.
Такой вопрос: в блоге от 2009 года, на офиц. сайте спринга, сказано:Logging is a very important dependency for Spring because a) it is the only mandatory external dependencyКогда это "случилось", что в спринг добавили сию "мандатори" ? В книге, датированной 2013 годом, про эту зависимость вообще ни слова.
В pom'ах, которые к примерам идут, - тоже ничего нету на тему Logging.

Ководство по мавну прочитал (точнее, пере читал), ничего сложного вроде.
Но что с зависимостями, которые где-то неявно в спринге сидят, и которые почему-то не вылезли на этапе mvn compile или mvn package, а прилетели только в рантайме - как заранее узнать, чего еще не хватает ?

PS. Вижу этот самый commons-logging*.jar только в файле ".classpath" - но ведь он собственно мавену не нужен, его эклипс вроде юзает ? Видимо, афтар делал всё в этой ИДЕ.
Хреново, что запуск примеров из командной строки с таким гемором идёт
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38813732
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozzmosisХреново, что запуск примеров из командной строки с таким гемором идёт "Чтобы ломать кирпичи надо тренироваться, тренироваться и что? Правильно - ещё раз тренироваться" (ц) киношный сержант ВДВ

P.S. Попробовал sqlite-оболочку откомпилять - 61 ненайденная ссылка на этапе линковки.
А ведь делал около года назад. Даже без особых проблем ...
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38813742
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ozzmosis,

по той книжке первый раз запускать spring не комильфо,
ищи любой тутор хелловорд по спрингу все станет понятно
...
Рейтинг: 0 / 0
spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
    #38813880
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozzmosisВ pom'ах, которые к примерам идут, - тоже ничего нету на тему Logging.

В этом и есть Maven. В pom прописан только Spring. А в pom дескрипторе Spring уже указан commons logging
https://repo1.maven.org/maven2/org/springframework/spring-core/4.1.2.RELEASE/spring-core-4.1.2.RELEASE.pom

ozzmosisКоводство по мавну прочитал (точнее, пере читал), ничего сложного вроде.

Ну, дело за малым. Начать использовать.

ozzmosisНо что с зависимостями, которые где-то неявно в спринге сидят, и которые почему-то не вылезли на этапе mvn compile или mvn package, а прилетели только в рантайме - как заранее узнать, чего еще не хватает ?

Maven Knows!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / spring in action, 3rd ed: не могу запустить пример, Class NFE в ApplicationContext
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]