NullPointerException в InitialContext
NullPointerException в InitialContext
private void connect() {
try {
InitialContext ctx = new InitialContext();
IServerBean serverBean = (IServerBean)ctx.
lookup("java:global/applicationserver/ServerBean!
com.test.applicationserver.IServerBean");
} catch (NamingException e) {
logger.error(e.getMessage(), e);
}
}
Я получил это исключение при попытке запустить клиентское приложение через консоль java -cp cleint-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.test.client.EJBClient
:
java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.<init>(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.<init>(SerialContext.java:335)
at com.sun.enterprise.naming.impl.SerialInitContextFactory.createInitialContext
(SerialInitContextFactory.java:358)
at com.sun.enterprise.naming.impl.SerialInitContextFactory.getInitialContext
(SerialInitContextFactory.java:353)
at com.sun.enterprise.naming.SerialInitContextFactory.getInitialContext
(SerialInitContextFactory.java:69)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at com.test.client.EJBClient.connect(EJBClient.java:33)
at com.test.client.EJBClient.main(EJBClient.java:61)
Это приложение для подключения к удаленному модулю EJB. Но когда я пытаюсь выполнить его в Eclipse, все прошло хорошо. Моя конфигурация:
- Java SE 1.7
- GlassFish Server Open Source Edition 3.1.2.2 (сборка 5)
- Eclipse Java EE IDE для веб-разработчиков. Версия: Juno Service Release 1 Идентификатор сборки: 20121004-1855
Maven зависимости:
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>C:\Java\jdk1.7.0_11\lib\tools.jar</systemPath>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>javaee</artifactId>
<version>3.1.2.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.appclient</groupId>
<artifactId>gf-client</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
2 ответа
Я решил эту проблему с этим решением:
Добавление этой библиотеки в папку с приложением:
- glassfish-embedded-all-3.1.1.jar hk2-core-1.6.9.jar
- внутренний апи-3.1.2.2.jar
- общего Util-3.1.2.2.jar
- GlassFish-CORBA-внутреннего апи-3,2,0-b005.jar
- GlassFish-именование-3.1.2.2.jar
И при запуске приложения добавьте следующие библиотеки в classpath:
java -cp glassfish-embedded.jar;hk2-core.jar;internal-api.jar;common-util.jar;glassfish-corba-internal-api.jar;glassfish-naming.jar;cleintconsole-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.test.client.EJBClient
У меня такая же проблема. Решено: Вы должны добавить gf-client.jar и appserv-rt.jar не только в classpath вашего проекта, но и во время выполнения (в Eclipse см. Run As > Выполнить конфигурации> Classpath > Add jars) .