プログラミングの課題にて、Nettyを使ってみようとおもうんだが、Nettyビルドに失敗する→Javaのパッケージに躓く
POSAコースではJava、C++11、Ruby、Pythonなど好きな言語を選べるようになっていて、なかにJava+Nettyというのがあった。Nettyってなにかのフレームワークっぽいのんで使ってみよう。
Nettyを展開すると、pom.xmlというのがあったので、mvn package してみる。しかし当然のように失敗する。大体いつもどっかでハマるんだよな、、、
$ mvn package [INFO] Scanning for projects... Downloading: http://repo.maven.apache.org/maven2/org/apache/felix/maven-bundle-plugin/2.3.4/maven-bundle-plugin-2.3.4.pom Downloaded: http://repo.maven.apache.org/maven2/org/apache/felix/maven-bundle-plugin/2.3.4/maven-bundle-plugin-2.3.4.pom (5 KB at 2.0 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/apache/felix/felix-parent/1.2.1/felix-parent-1.2.1.pom Downloaded: http://repo.maven.apache.org/maven2/org/apache/felix/felix-parent/1.2.1/felix-parent-1.2.1.pom (14 KB at 11. : : : C:\Users\(MY_NAME)\Desktop\dev\Java\netty-3.6.5\src\main\java\org\jboss\netty\util\TimerTask.java:0: invalid newline character (expected: CRLF) C:\Users\(MY_NAME)\Desktop\dev\Java\netty-3.6.5\src\main\java\org\jboss\netty\util\TimerTask.java:0: ファイルが新しい行で 終了していません。 C:\Users\(MY_NAME)\Desktop\dev\Java\netty-3.6.5\src\main\java\org\jboss\netty\util\VirtualExecutorService.java:0: invalid newline character (expected: CRLF) C:\Users\(MY_NAME)\Desktop\dev\Java\netty-3.6.5\src\main\java\org\jboss\netty\util\VirtualExecutorService.java:0: ファイルが新しい行で終了していません。 Audit done. [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3:26.372s [INFO] Finished at: Thu Apr 18 05:40:36 JST 2013 [INFO] Final Memory: 18M/182M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.9.1:check (check-style) on project netty: Failed during checkstyle execution: There are 1326 checkstyle errors. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
うーん、よくわからないが、改行コードが変らしい、、、ダウンロードしてきたモノを展開するとjarファイルが入ってるから、ビルドする必要はないのかな?
さて、NettyのサンプルにあるEchoClient/Serverをコンパイルをしてみた。CLASSPATHにはくだんのjarファイルを入れておく。
javac EchoServer.java EchoServerHandler.java javac EchoClient.java EchoClientHandler.java
うむ、うまくいく。では実行。
$ java EchoClient Exception in thread "main" java.lang.NoClassDefFoundError: EchoClient (wrong name: org/jboss/netty/example/echo/EchoClient) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Javaのパッケージってムカツクなあ、、、これらを深いディレクトリにいれて、jarにまとめてmanifestやらを入れる、みたいな意味の分からないことをするのは非生産的だなあ、と思うのは僕だけでしょうか。自動補完やら何やらで大層重たいEclipseを素直につかうべきなのでしょうか。