我有一个带有 2 个 Maven 模块的项目——服务器和客户端。我使用 JBoss 6.0.0 和 IDEA 12。
服务器:
import javax.ejb.*;
@Remote
public interface db {
int hi();
}
+
import javax.ejb.*;
@Stateless
public class dbBean implements db {
public int hi()
{
return 777;
}
}
客户:
public class Main {
public static void main (String [] args)
{
Frame f = new Frame("Hey");
f.setSize(300, 300);
f.setVisible(true);
Label lb = new Label();
lb.setAlignment(Label.CENTER);
try
{
Context context;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
props.setProperty("java.naming.provider.url", "jnp://127.0.0.1:1099");
context = new InitialContext(props);
Object connectionFacadeRemote = context.lookup("dbBean/remote");
db exampleService = (db) connectionFacadeRemote;
lb.setText(Integer.toString(exampleService.hi()));
}
catch (NamingException e)
{
System.out.println(String.valueOf(e));
}
f.add(lb);
}
}
客户端也有接口的副本。它在 IDEA ide 中运行良好,应用程序返回我的 777 结果 :) 但如果我尝试从 cmd 执行它:
mvn exec:java -Dexec.mainClass="Main" // main class called "Main"
我会收到一个错误:
javax.naming.NoInitialContextException: Cannot instatiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException org.jnp.interfaces.NamingContextFactory]
客户清单如下:
Manifest-Version: 1.0
Main-Class: Main
那么为什么它不能在 IDE 之外工作呢?