Я пытаюсь добавить заставку в большой проект Java. Приложение скомпилировано в исполняемый файл .jar с использованием ANT.
Я могу легко заставить заставку работать с NetBeans, просто добавив -splash: src / com /.../.../ image.PNG к параметрам виртуальной машины моего основного проекта. Тем не менее, добавление SplashScreen-Image: com /.../.../ image.PNG в мой файл манифеста завершается неудачно с «SplashScreen.getSplashScreen () вернул ноль»
Я уже открыл свой архив .jar, чтобы убедиться, что все настроено правильно: мой файл META-INF \ MANIFEST.MF содержит строку SplashScreen-Image. Я пытался переместить его до или после Main-Class. Мое действительное изображение .PNG также находится в архиве, в правильном пути.
Я компилирую этот java-проект с помощью ANT, который, как я могу догадаться, является источником моих проблем (я смог заставить простой, "jar cmf ..." пример работать просто отлично).
Я использую следующее, чтобы подготовить элементы проекта к достижению:
<target name="compile" depends="init"
description="Compile the source">
<!-- Compile the java code from ${src} into ${build} -->
<path id="lib.path.ref">
<fileset dir="${path_to_jre}" includes="*.jar"/>
</path>
<javac srcdir="${src}" destdir="${build}" source="${java_ver}" target="${java_ver}"
includeantruntime="false">
<!--compilerarg value="-Xbootclasspath/p:${toString:lib.path.ref}" compiler="javac1.7"/-->
<compilerarg value="-Xlint:unchecked"/>
<classpath>
<fileset dir="${LibDir}">
<include name="*.jar"/>
</fileset>
<pathelement path="${dependant_jar}"/>
<pathelement path="${another_dependant_jar}"/>
</classpath>
</javac>
<!-- Copy the .png files -->
<copy todir="${build}">
<fileset dir="${src}" casesensitive="false">
<include name="**/*.PNG"/>
</fileset>
</copy>
</target>
Обратите внимание, что я использую копию для перемещения файлов .PNG вместе с файлами .class. Мое изображение.PNG для заставки просто с другими. Я добавил его в свой проект NetBeans, просто скопировав его - ничего особенного.
Моя цель достижения заключается в следующем:
<target name="archive" depends="compile"
description="Generate the .jar file">
<!-- Put everything in ${build} into the .jar file -->
<jar jarfile="${jarfile}" basedir="${build}">
<!-- Merge in contents of dependency .jars -->
<zipfileset src="${LibDir}/snakeyaml.jar"/>
<zipfileset src="${dependant_jar}"/>
<zipfileset src="${another_dependant_jar}"/>
<!-- Specify main class in manifest -->
<manifest>
<attribute name="SplashScreen-Image" value="com/../../image.PNG"/>
<attribute name="Main-Class" value="${mainclass}"/>
</manifest>
</jar>
</target>
Таким образом, здесь создается мой манифест в возможном .jar, где я также в конце концов решил добавить тег splashscreen.
Я немного новичок в работе с ANT, поэтому любые советы относительно того, как справиться с этим или что искать, приветствуются.