Java 在EJB示例中获取错误
我正在尝试从中实现一个EJB示例 但是客户端的EJBTester.java给出了一个错误:Java 在EJB示例中获取错误,java,ejb,Java,Ejb,我正在尝试从中实现一个EJB示例 但是客户端的EJBTester.java给出了一个错误: java.io.FileNotFoundException: jndi.properties (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:146) at j
java.io.FileNotFoundException: jndi.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at com.tutorialspoint.test.EJBTester.<init>(EJBTester.java:23)
at com.tutorialspoint.test.EJBTester.main(EJBTester.java:37)
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.init(InitialContext.java:242)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at com.tutorialspoint.test.EJBTester.<init>(EJBTester.java:28)
at com.tutorialspoint.test.EJBTester.main(EJBTester.java:37)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:671)
... 5 more
java.lang.NullPointerException
at com.tutorialspoint.test.EJBTester.testStatelessEjb(EJBTester.java:51)
null
at com.tutorialspoint.test.EJBTester.main(EJBTester.java:39)
java.io.FileNotFoundException:jndi.properties(没有这样的文件或目录)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:146)
位于java.io.FileInputStream。(FileInputStream.java:101)
位于com.tutorialspoint.test.EJBTester(EJBTester.java:23)
位于com.tutorialspoint.test.EJBTester.main(EJBTester.java:37)
javax.naming.NoInitialContextException:无法实例化类:org.jnp.interfaces.NamingContextFactory[根异常为java.lang.ClassNotFoundException:org.jnp.interfaces.NamingContextFactory]
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
位于javax.naming.InitialContext.init(InitialContext.java:242)
位于javax.naming.InitialContext。(InitialContext.java:216)
位于com.tutorialspoint.test.EJBTester(EJBTester.java:28)
位于com.tutorialspoint.test.EJBTester.main(EJBTester.java:37)
原因:java.lang.ClassNotFoundException:org.jnp.interfaces.NamingContextFactory
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:278)
位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:671)
... 还有5个
java.lang.NullPointerException
在com.tutorialspoint.test.EJBTester.teststatelezeejb(EJBTester.java:51)上
无效的
位于com.tutorialspoint.test.EJBTester.main(EJBTester.java:39)
你能给我一个很好的例子,从中我可以清楚我的EJB概念吗?你的代码(从注释中)
将尝试从工作目录加载jndi.properties
只需执行以下操作:
InitialContext initialContext = new InitialContext();
这将从类路径的根作为资源加载jndi.properties
如果您确实想要加载jndi.properties
(从类路径)显式地使用以下命令
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream input = loader.getResourceAsStream("jndi.properties");
if (input == null) {
throw new IllegalStateException("Could not find jndi.properties in class path");
}
props.load(input);
你能展示一下你的代码+结构吗。您是显式加载
jndi.properties
还是将其放在类路径上?我是显式添加jndi.properties。在src文件夹中。我正在为EJBTester类打包“com.tutorialspoint.test”时,您是否显式加载了jndi.properties
?我正在src文件夹中创建jndi.properties文件。您如何实例化InitialContextFactory
?谢谢,这是我们的工作。非常感谢
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream input = loader.getResourceAsStream("jndi.properties");
if (input == null) {
throw new IllegalStateException("Could not find jndi.properties in class path");
}
props.load(input);