2016-06-21 19 views
0

JavaでJavaSciptで書かれたVerticleをデプロイします。しかし、私はいつもClassNotFoundErrorExceptionを手に入れます - パスは正しいですが、vertx-lang-jsリソースが追加されます。Vert.x:JavaからのJavaScript Verticleのデプロイに失敗しました。

これは私のJS-垂直方向のである:

declare var vertx;  
var eb = new vertx.EventBus() 
eb.consumer("cbweb.validation", (message:any) => { 
    console.log(message); 
}); 
console.log("Validation.js ready") 

そしてここでは、垂直方向のを展開するための私のJava-コード:

private static final String RELATIVE_PATH = "D:/Temp/vertxFtpClient/jslibs/jsftp/verticle.js"; 

public static void main(String[] args) throws InterruptedException { 
    Vertx vertx = Vertx.vertx(); 
    vertx.deployVerticle(new BasicVerticle(), stringAsyncResult -> { 
     System.out.println("BasicVerticle deployment complete"); 
    }); 


    vertx.deployVerticle(RELATIVE_PATH); 

    vertx.close(); 

} 

}

、ここでどのように私のpom.xmlです次のようになります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.vertex.ftp</groupId> 
    <artifactId>VertexAdapter</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>io.vertx</groupId> 
      <artifactId>vertx-core</artifactId> 
      <version>3.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>io.vertx</groupId> 
      <artifactId>vertx-lang-js</artifactId> 
      <version>3.1.0</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>VertexLearning</finalName> 
    </build> 
    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
    </properties> 
</project> 

何かが足りないかもしれませんか?

答えて

1

JavaScriptを使用する場合は、Javaコードをまったく書く必要はありません。必要なのは、src/main/resourcesにjsコードを追加することです(これを別のものに変更することはできますが、デフォルトを使用しないようにmavenを調整する必要があります)。

そして、このように使用maven shade plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
     <goal>shade</goal> 
     </goals> 
     <configuration> 
     <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
      <manifestEntries> 
       <Main-Class>io.vertx.core.Launcher</Main-Class> 
       <Main-Verticle>${main.verticle}</Main-Verticle> 
      </manifestEntries> 
      </transformer> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
      <resource>META-INF/services/io.vertx.core.spi.VerticleFactory</resource> 
      </transformer> 
     </transformers> 
     <artifactSet> 
     </artifactSet> 
     <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-fat.jar</outputFile> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

そしてsrc/main/resource例えば:jslibs/jsftp/verticle.jsから変数あなたのjsとmain.verticle垂直方向のファイルの相対パスを宣言します。

関連する問題