报错:
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interf
aces.Naming ContextFactory [Root exception is java.lang.ClassNotFoundException:
org/jnp/interfaces/Naming ContextFactory]
客户端:
package greet;
import javax.naming.*;
import java.util.Hashtable;
import javax.rmi.PortableRemoteObject;
import greet.*;
class GreetClient
{
public static void main(String[] args) {
System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.Naming ContextFactory");
System.setProperty("java.naming.provider.url",
"localhost:1099");
try {
// Get a naming context
InitialContext jndiContext = new InitialContext();
System.out.println("Got context");
Object ref = jndiContext.lookup("GreetingEJB");
System.out.println("Got reference");
GreetHome home = (GreetHome)
PortableRemoteObject.narrow (ref, GreetHome.class);
Greet greet = home.create();
System.out.print("The magic number from server is ");
System.out.println(greet.calculateMagic(123.456));
} catch(Exception e) {
System.out.println(e.toString());
}
}
}
ejb-jar.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>jBoss test application </description>
<display-name>Test</display-name>
<enterprise-beans>
<session>
<ejb-name>GreetEJB</ejb-name>
<home>greet.GreetHome</home>
<remote>greet.Greet</remote>
<ejb-class>greet.GreetBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
jboss.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>GreetEJB</ejb-name>
<jndi-name>GreetingEJB</jndi-name>
</session>
<secure>false</secure>
</enterprise-beans>
<resource-managers/>
</jboss>
8 个解决方案
#1
org/jnp/interfaces 包没有找到,在lib目录下有该包,你可以解压到你得目录或者在classpath里面设置该路径就可以了
#2
好象没有这个包呀? 在什么目录下找呀?
详细一点吧!
谢谢!
详细一点吧!
谢谢!
#3
一般是在容器的deploy/lib目录下,我不知道你用的是什么容器运行,我用的是jboss3.2.3,那么我就在e:/jboss3.2.3/server/deploy/lib/下面找到jnpserver.jar这个包,你可以把这个包的路径加到classpath中,也可以把这个包解压到与你的程序在同一个目录下就可以了.象这种找不到class错误大多都是因为他找不到包,你可以手工挨个打开jar包看看里面有没有你想要的类,找到这些包,然后把路径告诉编译器就可以了,说的这么详细是不是该揭贴了啊?有问题在问.
#4
老大
我的是jboss-3.2.4 按你的做了 没用呀
可恶的jndi
能发个完整的例子吗?
code@cnkj.cn
谢谢!
先加分给你罗!!
我的是jboss-3.2.4 按你的做了 没用呀
可恶的jndi
能发个完整的例子吗?
code@cnkj.cn
谢谢!
先加分给你罗!!
#5
不会啊,我前面也遇到你得这个问题,然后我就把jnpserver.jar这个包解开,取里面得org文件夹放到你得测试程序同一目录下就可以了啊,你照我得做肯定是没错得。你得问题是包没有找到,那么你把包路径找到了就肯定行得。如有问题,可以看我得那篇讲调试ejb得帖子.如果还报错,你要看清楚是不是还是原来得错啊。照我得经验,你后面还会有很多包找不到,需要你自己手工找到告诉编译器得。
#6
现在是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Log
ger
at org.jnp.interfaces.NamingContext.<clinit>(NamingContext.java:102)
at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingConte
xtFactory.java:41)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
62)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at greet.GreetClient.main(GreetClient.java:18)
不会真的一个一个找把?有别的方法吗?
另外能在jboss 中部署jsp+bean+servlet的程序吗?
如能怎么做请指点!
谢谢!
解决后加高分!
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Log
ger
at org.jnp.interfaces.NamingContext.<clinit>(NamingContext.java:102)
at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingConte
xtFactory.java:41)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
62)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at greet.GreetClient.main(GreetClient.java:18)
不会真的一个一个找把?有别的方法吗?
另外能在jboss 中部署jsp+bean+servlet的程序吗?
如能怎么做请指点!
谢谢!
解决后加高分!
#7
.;D:\j2sdk1.4.2\lib;D:\j2sdk1.4.2\lib\tools.jar;E:\jboss-3.2.3\server\default\lib\jboss-j2ee.jar;E:\jboss-3.2.3\server\default\lib\jnpserver.jar;E:\jboss-3.2.3\server\default\lib\javax.servlet.jar;E:\jboss-3.2.3\client\jbossall-client.jar;E:\jboss-3.2.3\client\jnet.jar;E:\jboss-3.2.3\client\log4j.jar;E:\jboss-3.2.3\server\default\lib\jboss.jar;E:\jboss-3.2.3\server\default\lib\jboss-transaction.jar
我以前是一个一个找得,classpath 这样配置成这样就可以了。
部署jsp+bean+servlet 我没有配过。
我以前是一个一个找得,classpath 这样配置成这样就可以了。
部署jsp+bean+servlet 我没有配过。
#8
应该是这
System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.Naming ContextFactory");
System.setProperty("java.naming.provider.url",
"localhost:1099");设置错误吧。
你把它换成:
Properties p = new Properties();
p.setProperty(javax.naming.Context.PROVIDER_URL,
PROVIDER_URL);//PROVIDER_URL与服务器类型有关。
p.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
INITIAL_CONTEXT_FACTORY);
InitialContext jndiContext = new InitialContext(p);
System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.Naming ContextFactory");
System.setProperty("java.naming.provider.url",
"localhost:1099");设置错误吧。
你把它换成:
Properties p = new Properties();
p.setProperty(javax.naming.Context.PROVIDER_URL,
PROVIDER_URL);//PROVIDER_URL与服务器类型有关。
p.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
INITIAL_CONTEXT_FACTORY);
InitialContext jndiContext = new InitialContext(p);
#1
org/jnp/interfaces 包没有找到,在lib目录下有该包,你可以解压到你得目录或者在classpath里面设置该路径就可以了
#2
好象没有这个包呀? 在什么目录下找呀?
详细一点吧!
谢谢!
详细一点吧!
谢谢!
#3
一般是在容器的deploy/lib目录下,我不知道你用的是什么容器运行,我用的是jboss3.2.3,那么我就在e:/jboss3.2.3/server/deploy/lib/下面找到jnpserver.jar这个包,你可以把这个包的路径加到classpath中,也可以把这个包解压到与你的程序在同一个目录下就可以了.象这种找不到class错误大多都是因为他找不到包,你可以手工挨个打开jar包看看里面有没有你想要的类,找到这些包,然后把路径告诉编译器就可以了,说的这么详细是不是该揭贴了啊?有问题在问.
#4
老大
我的是jboss-3.2.4 按你的做了 没用呀
可恶的jndi
能发个完整的例子吗?
code@cnkj.cn
谢谢!
先加分给你罗!!
我的是jboss-3.2.4 按你的做了 没用呀
可恶的jndi
能发个完整的例子吗?
code@cnkj.cn
谢谢!
先加分给你罗!!
#5
不会啊,我前面也遇到你得这个问题,然后我就把jnpserver.jar这个包解开,取里面得org文件夹放到你得测试程序同一目录下就可以了啊,你照我得做肯定是没错得。你得问题是包没有找到,那么你把包路径找到了就肯定行得。如有问题,可以看我得那篇讲调试ejb得帖子.如果还报错,你要看清楚是不是还是原来得错啊。照我得经验,你后面还会有很多包找不到,需要你自己手工找到告诉编译器得。
#6
现在是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Log
ger
at org.jnp.interfaces.NamingContext.<clinit>(NamingContext.java:102)
at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingConte
xtFactory.java:41)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
62)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at greet.GreetClient.main(GreetClient.java:18)
不会真的一个一个找把?有别的方法吗?
另外能在jboss 中部署jsp+bean+servlet的程序吗?
如能怎么做请指点!
谢谢!
解决后加高分!
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Log
ger
at org.jnp.interfaces.NamingContext.<clinit>(NamingContext.java:102)
at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingConte
xtFactory.java:41)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
62)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at greet.GreetClient.main(GreetClient.java:18)
不会真的一个一个找把?有别的方法吗?
另外能在jboss 中部署jsp+bean+servlet的程序吗?
如能怎么做请指点!
谢谢!
解决后加高分!
#7
.;D:\j2sdk1.4.2\lib;D:\j2sdk1.4.2\lib\tools.jar;E:\jboss-3.2.3\server\default\lib\jboss-j2ee.jar;E:\jboss-3.2.3\server\default\lib\jnpserver.jar;E:\jboss-3.2.3\server\default\lib\javax.servlet.jar;E:\jboss-3.2.3\client\jbossall-client.jar;E:\jboss-3.2.3\client\jnet.jar;E:\jboss-3.2.3\client\log4j.jar;E:\jboss-3.2.3\server\default\lib\jboss.jar;E:\jboss-3.2.3\server\default\lib\jboss-transaction.jar
我以前是一个一个找得,classpath 这样配置成这样就可以了。
部署jsp+bean+servlet 我没有配过。
我以前是一个一个找得,classpath 这样配置成这样就可以了。
部署jsp+bean+servlet 我没有配过。
#8
应该是这
System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.Naming ContextFactory");
System.setProperty("java.naming.provider.url",
"localhost:1099");设置错误吧。
你把它换成:
Properties p = new Properties();
p.setProperty(javax.naming.Context.PROVIDER_URL,
PROVIDER_URL);//PROVIDER_URL与服务器类型有关。
p.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
INITIAL_CONTEXT_FACTORY);
InitialContext jndiContext = new InitialContext(p);
System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.Naming ContextFactory");
System.setProperty("java.naming.provider.url",
"localhost:1099");设置错误吧。
你把它换成:
Properties p = new Properties();
p.setProperty(javax.naming.Context.PROVIDER_URL,
PROVIDER_URL);//PROVIDER_URL与服务器类型有关。
p.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
INITIAL_CONTEXT_FACTORY);
InitialContext jndiContext = new InitialContext(p);