在Verticle中调用container.deployVerticle时的java.lang.ClassNotFoundException

时间:2015-03-31 07:08:41

标签: java classloader classnotfoundexception vert.x

我是关于Vertx的新手,所以这可能是一个简单的问题。 当我尝试从命令行运行一个Verticle时,当我尝试以编程方式部署另一个Verticle时,总是得到一个ClassNotFoundException:

container.deployVerticle( “melby.poc.verticles.AuditVerticle”); AuditVerticle本身就是一个Verticle,位于我尝试运行的主“verticle”的子包中

我也尝试将此作为模块运行,没有任何运气 我用来运行Verticle的命令是: vertx运行src \ main \ java \ melby \ poc \ Server.java

当我尝试启动Verticle时,Consolle输出是:

Succeeded in deploying verticle
Exception in Java verticle
java.lang.ClassNotFoundException: melby.poc.verticles.AuditVerticle
        at org.vertx.java.platform.impl.ModuleClassLoader.loadFromModule(ModuleC
lassLoader.java:127)
        at org.vertx.java.platform.impl.ModuleClassLoader.loadClass(ModuleClassL
oader.java:108)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.vertx.java.platform.impl.java.JavaVerticleFactory.createVerticle(
JavaVerticleFactory.java:55)
        at org.vertx.java.platform.impl.DefaultPlatformManager$21.run(DefaultPla
tformManager.java:1748)
        at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:175
)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(Single
ThreadEventExecutor.java:370)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThread
EventExecutor.java:116)
        at java.lang.Thread.run(Thread.java:745)

我使用vertx 2.1.5和java 8 我是否需要更改/添加vertx的类路径,以便它能够在同一个源文件夹中加载类?

更新 我能够通过添加定义可运行Verticle的mod.json文件并将此文件添加到根目录来使其工作。 从这个目录我现在能够运行命令: vertx运行src \ main \ java \ melby \ poc \ Server.java -cp目标/类 我仍然不理解为什么我需要一个mod.json文件以及为什么我需要定义-cp 如果我不以编程方式部署Verticle我不需要这个。

0 个答案:

没有答案