0

我有一个带有 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 之外工作呢?

4

0 回答 0