実現したいこと
Eclipseで開発したjavaのプロジェクトをビルドしてjarファイルを作成しましたが、
エラーが出てしまい実行できません。
お知恵をお借りしたいです。
前提
Eclipseの設定にあるコンパイラ準拠は1.8にワークスペースおよびプロジェクト固有双方設定しており、
javaプロジェクトのJREはJDK 1.8.0を使用しており、実行環境のjavaおよびjavacのバージョンは 1.8.0になっています。
またEclipseのant統合を使用してのビルドだとjava11にしないといけないというエラーが出たので
外部ツールの起動設定でビルドを行っています。
Eclipse上でビルドを行ったjavaプロジェクトをデバックすること自体はできています。
※ただいつから発生したのかが特定できていないのですが、Eclipse起動後、初回だけデバック実行時にエラーが出るようになりました。
もう一度実行すると問題なく実行できています。
java11にバージョンを上げてしまえば簡単なのですが、
あいにくjavaのバージョンを1.8.0から上げることはできない条件になっており、どうにか解決せざる得ない状況です。
ライブラリーは下記のものを使用しています。(enterpriseはsalesforceのsoap apiを使用するためのものです)
発生している問題・エラーメッセージ
①デバック実行時の初回だけに発生 プロジェクト '○○○○○' でビルダー '統合外部ツール・ビルダー' の実行中にエラーが発生しました。 JRE version less than 11 is not supported. ②ビルドして作成されたjarの実行時に発生 Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:330) at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:263) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:275) at java.util.jar.JarVerifier.update(JarVerifier.java:230) at java.util.jar.JarFile.initializeVerifier(JarFile.java:383) at java.util.jar.JarFile.ensureInitialization(JarFile.java:612) at java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69) at sun.misc.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:991) at java.net.URLClassLoader.defineClass(URLClassLoader.java:451) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)](https://ddjkaamml8q8x.cloudfront.net/questions/2023-11-12/95442b77-6959-41f2-982f-8ce6c1994baf.png)
該当のソースコード
build.xml
1<?xml version="1.0" encoding="UTF-8" ?> 2<project name="○○○○Ant" default="build" basedir="."> 3 4 <property name="src.dir" value="○○○○\src" /> 5 <property name="bin.dir" value="○○○○\bin" /> 6 <property name="classes.dir" value="○○○○\bin\classes" /> 7 <property name="lib.dir" value="○○○○\lib"/> 8 <property name="jar.dir" value="○○○○\jar"/> 9 <property name="zip.dir" value="○○○○\zip"/> 10 <property name="conf.dir" value="○○○○\conf"/> 11 <property name="debug" value="true"/> 12 13 <target name="clean"> 14 <delete dir="${bin.dir}" /> 15 </target> 16 17 <target name="compile"> 18 <mkdir dir="${bin.dir}" /> 19 <javac srcdir="${src.dir}" destdir="${bin.dir}" includeantruntime="false" source="1.8" target="1.8" debug="${debug}"> 20 <compilerarg value="-bootclasspath"/> 21 <compilerarg value="○○○○\java\jdk1.8.0_202\jre\lib\rt.jar"/> 22 <compilerarg value="-g:source,lines,vars"/> 23 <classpath> 24 <fileset dir="${lib.dir}" includes="*.jar" /> 25 </classpath> 26 </javac> 27 </target> 28 29 <target name="jar" depends="compile"> 30 <mkdir dir="${jar.dir}"/> 31 <jar destfile="${jar.dir}/○○○○.jar" basedir="${bin.dir}"> 32 <manifest> 33 <attribute name="Main-Class" value="○○○○.MainController" /> 34 </manifest> 35 <fileset dir="${lib.dir}" includes="*.jar" /> 36 <fileset dir="${src.dir}" includes="*.jar" /> 37 <zipgroupfileset dir="${lib.dir}" includes="*.jar"/> 38 </jar> 39 </target> 40 41 <target name="zip" depends="compile"> 42 <mkdir dir="${zip.dir}"/> 43 <zip destfile="${zip.dir}/○○○○_Batch.zip" basedir="${bin.dir}"> 44 <fileset dir="${conf.dir}" includes="*.properties" /> 45 <fileset dir="${lib.dir}" includes="*.jar" /> 46 <zipgroupfileset dir="${lib.dir}" includes="*.jar"/> 47 </zip> 48 </target> 49 50 <target name="build" depends="clean, jar, zip"> 51 <echo message="Build completed successfully"/> 52 </target> 53</project>
試したこと
開発環境のjavaおよびjavacのバージョン確認(1.8.0)
ビルドされたjarに含まれているクラスのjava バージョンの確認(52)
ant統合の使用をやめて、外部ツールの起動設定からantの実行
ライブラリーをjdk1.8.0からEclipseの初期インストール済のjavaSE-1.8への変更(効果なし)

回答1件
あなたの回答
tips
プレビュー