嵌入式OrientDB" NoClassDefFoundError"与控制台

时间:2016-04-20 19:10:34

标签: orientdb

我在单个JVM上的Java EE应用程序中运行嵌入式服务器(目前)。应用服务器是带有Java 7的WAS 8.5。

以下是我初始化服务器的方法:

            log.info("warming up database server bean...");
        workingFolder = (String) lookup(RESOURCE_WORKING_FOLDER);

        String orientdbHome = new File(workingFolder).getAbsolutePath() + "/orientdb"; //Set OrientDB home to current directory
        System.setProperty("ORIENTDB_HOME", orientdbHome);

        String serverConfig = orientdbHome + "/config/orientdb-server-config.xml";

        log.info("statring orientdb from: " + orientdbHome + ", the server config file: " + serverConfig);
        server = OServerMain.create();
        server.startup(new File(serverConfig));
        server.activate();
        log.info("orientdb server started successfully: " + server.isActive());

我在2.1.16版本上引用了默认服务器配置文件。我对文件进行了以下两项更改:1)启用了Hazelcast插件,2)添加此用户:<user resources="*" password="password" name="root"/>

它似乎正确初始化,我甚至可以连接到Studio应用程序并从那里操纵数据,没有任何错误迹象。

但是,我无法从&#34;控制台&#34;应用

我在客户端上得到了这个:

  

orientdb&GT; connect remote:192.168.3.12 root password

     

与用户连接到远程服务器实例[remote:192.168.3.12]   &#39; root&#39; ...错误:   com.orientechnologies.orient.core.exception.OStorageException:不能   连接到远程服务器/数据库&#39; remote:192.168.3.12 /&#39;

     

错误:com.orientechnologies.common.io.OIOException:无法打开   连接到远程服务器:192.168.3.12:2424 /

     

错误:com.orientechnologies.common.io.OIOException:错误   连接到192.168.3.12:2424

     

错误:   com.orientechnologies.orient.enterprise.channel.binary.ONetworkProtocolException:   无法从远程服务器读取协议版本/192.168.3.12:2424:   java.net.SocketTimeoutException:读取超时

在服务器上:

  

[4/20/16 15:03:18:128 EDT] 000001d8 OServerNetwor E客户端出错   连接                                    java.lang.NoClassDefFoundError:com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryServer   (初始化失败)at   java.lang.J9VMInternals.initializationAlreadyFailed(J9VMInternals.java:284)     在   com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.config(OBinaryNetworkProtocolAbstract.java:89)     在   com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.config(ONetworkProtocolBinary.java:116)     在   com.orientechnologies.orient.server.network.OServerNetworkListener.run(OServerNetworkListener.java:216)   引起:java.lang.NoClassDefFoundError:   com.orientechnologies.orient.enterprise.channel.OChannel $ 1 at   com.orientechnologies.orient.enterprise.channel.OChannel。(OChannel.java:60)     ... 3更多引起:java.lang.ClassNotFoundException:   com.orientechnologies.orient.enterprise.channel.OChannel $ 1 at   java.net.URLClassLoader.findClass(URLClassLoader.java:665)at   com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:230)     在java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942)at   java.lang.ClassLoader.loadClass(ClassLoader.java:877)at   com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:123)     在java.lang.ClassLoader.loadClass(ClassLoader.java:827)at   com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)     在   com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)     在   com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:616)     在java.lang.ClassLoader.loadClass(ClassLoader.java:827)at   com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:584)     在java.lang.ClassLoader.loadClass(ClassLoader.java:827)... 4更多

以下是我的应用中包含的Maven依赖项:

<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-jdbc</artifactId>
    <version>2.1.16</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-enterprise</artifactId>
    <version>2.1.16</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-server</artifactId>
    <version>2.1.16</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-object</artifactId>
    <version>2.1.16</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-distributed</artifactId>
    <version>2.1.16</version>
    <scope>compile</scope>
</dependency>

1 个答案:

答案 0 :(得分:1)

我想出了这个问题。

在查看启动日志时,我注意到了这一点:

  

[4/20/16 15:16:47:077 EDT] 000000df OServerNetwor I Port   0.0.0.0:2424忙,尝试下一个可用... [4/20/16 15:16:47:077 EDT] 000000df OServerNetwor I听二进制连接   0.0.0.0:2425(协议v.32,socket = default)

某些东西正在干扰端口2424(可能是以前尝试实现此操作失败)所以使用下一个可用端口。

&#34;控制台&#34;我试图连接到端口2424.一旦我手动指定端口2425,它就可以工作。