jarファイル実行時にjava.lang.SecurityException発生
sparkjavaのテスト中、依存関係のjarをまとめて1つのjarを作成し、実行する際に例外が発生。
>java -jar foltia2ical-0.1.jar Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:284) at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:273) at java.util.jar.JarVerifier.update(JarVerifier.java:228) at java.util.jar.JarFile.initializeVerifier(JarFile.java:383) at java.util.jar.JarFile.getInputStream(JarFile.java:450) at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:776) at sun.misc.Resource.cachedInputStream(Resource.java:77) at sun.misc.Resource.getByteBuffer(Resource.java:160) at java.net.URLClassLoader.defineClass(URLClassLoader.java:442) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:367) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
どうも纏められているjarのメタ情報が邪魔なので、削除するといいらしい。 http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
apply plugin: 'java' apply plugin: 'eclipse' group = 'foltia2ical' sourceCompatibility = targetCompatibility = '1.8' repositories { mavenCentral() } dependencies { compile 'com.sparkjava:spark-core:2.1' compile 'org.mnode.ical4j:ical4j:1.0.3' compile 'postgresql:postgresql:9.1-901-1.jdbc4' compile 'org.apache.commons:commons-collections4:4.0' } jar { doFirst { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' manifest { attributes 'Implementation-Title': 'foltia2ical', 'Implementation-Version': 1.0 attributes "Main-Class" : "com.nqlab.tools.foltia.foltia2ical.Foltia2iCal" } from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } task execJava (type: JavaExec) { classpath = sourceSets.main.runtimeClasspath main = "com.nqlab.tools.foltia.foltia2ical" }
>java -jar foltia2ical-0.1.jar [Thread-0] INFO spark.webserver.SparkServer - == Spark has ignited ... [Thread-0] INFO spark.webserver.SparkServer - >> Listening on 0.0.0.0:7654 [Thread-0] INFO org.eclipse.jetty.server.Server - jetty-9.0.z-SNAPSHOT [Thread-0] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@1a2e95c4{HTTP/1.1}{0.0.0.0:7654}