Я столкнулся с проблемой при попытке развернуть мой проект Java.Я сослался на внешний jar как на библиотеку с исходниками и javadoc (controlsfx), но после развертывания на работающем jar я получаю сообщение: com.sun.javafx.css.StyleManager loadStylesheetUnPriviliged Info: не удалось найти таблицу стилей: ",Это таблица стилей CSS для Rangelider, которая хранится в указанном банке по точному пути, указанному в сообщении об ошибке.Из того, что я могу сказать, таблицы стилей доступны где-то внутри конструктора rangelider, что означает, что я не могу реально изменить метод доступа к этим таблицам стилей (вероятно, classloader.getResource ()).Теперь, поскольку я также зависим от нативных библиотек, я использую oneJar для развертывания этого проекта и из того, что я знаю, oneJar использует свой собственный измененный classLoader, я не знаю, имеет ли это какое-либо отношение к нему, так как многиедругие библиотеки, на которые есть ссылки, работают хорошо, и, согласно Саймону Туффсу (https://www.ibm.com/developerworks/library/j-onejar/index.html), метод getResource его загрузчика классов должен работать нормально.
В любом случае, весь класс rangelider работает хорошо, если я экспортирую из Eclipse, но не 't, когда я собираю его с помощью ant в oneJar. Я новичок в написании файлов build.xml. У кого-нибудь есть предложения о том, что можно изменить или попробовать здесь?
Я пробовал разные методы доступа и вручную добавлялтаблица стилей для объекта javafx, но она не примет его.
Я попытался изменить build.xml и убедился, что все библиотеки, на которые есть ссылки, находятся там, где они принадлежат.
Я также попытался экспортироватьот затмения, которое сработало, но не вариант, так как я не хочу проходить через трудности загрузки родной ВесыRies в моем работающем Jar.
Иерархия папок в моей папке oneJar выглядит так:-one-jar -...
Любая помощь будет принята с благодарностью!
<!-- Hook into One-Jar project -->
<available property="one-jar.dir" file="../one-jar/build.onejar.xml" value="../one-jar"/>
<!-- Will be ignored if available above -->
<property name="one-jar.dir" location="one-jar" />
<import file="${one-jar.dir}/build.onejar.xml"/>
<property name="eclipse.jar-in-jar.dir" value="build-lib/eclipse"/>
<property name="temp.dir" value="temp" />
<path id="libraries">
<fileset dir="lib" includes="*.jar"/>
</path>
<target name="mkdirs">
<mkdir dir="${test.results.dir}" />
<mkdir dir="${test.reports.dir}"/>
<mkdir dir="classes/src"/>
<mkdir dir="classes/test"/>
<mkdir dir="classes/junit"/>
<mkdir dir="build"/>
<mkdir dir="build/resources" />
<copy todir ="build/resources" >
<fileset dir = "${basedir}/resources" />
</copy>
</target>
<target name="build" depends="clean, mkdirs, compile, build.DSEConstructionKIT" />
<target name="clean">
<delete dir="classes" />
</target>
<target name="distclean" depends="clean" description="clean distribution">
<delete dir="build"/>
<delete dir="test-reports"/>
<delete dir="test-results"/>
</target>
<target name="compile" depends="mkdirs">
<javac includeantruntime="false" destdir="classes/src" includes="**/*.java" debug="true">
<src path="src" />
<classpath refid="libraries" />
<classpath refid="one-jar.libraries"/>
<classpath path="${one-jar.ant.jar}"/>
</javac>
<javac includeantruntime="false" destdir="classes/test" includes="**/*.java" debug="true">
<src path="test" />
<classpath refid="libraries" />
<classpath refid="one-jar.libraries"/>
<classpath path="${one-jar.ant.jar}"/>
</javac>
<javac includeantruntime="false" destdir="classes/junit" includes="**/*.java" debug="true">
<src path="junit" />
<classpath refid="libraries" />
<classpath refid="one-jar.libraries"/>
<!-- Uses Invoker to set up a JUnit test bridge -->
<classpath path="classes/test"/>
</javac>
</target>
<!-- Build the One-Jar -->
<target name="build.DSEConstructionKIT">
<mkdir dir="build"/>
<one-jar destfile="build/DSEConstructionKIT.jar">
<manifest>
<attribute name="Main-Class" value="com.bosch.dse.zanger.Boot"/>
<attribute name="One-Jar-Main-Class" value="application.GuiApplication"/>
</manifest>
<main>
<fileset dir="classes/src"/>
</main>
<lib>
<fileset dir="lib" includes="*.jar" />
</lib>
<binlib>
<fileset dir="binlib" includes="*.dll"/>
</binlib>
</one-jar>
<one-jar destfile="build/test-DSEConstructionKIT.jar">
<manifest>
<attribute name="Main-Class" value="com.bosch.dse.zanger.Boot"/>
<attribute name="One-Jar-Main-Class" value="application.GuiApplication"/>
</manifest>
<zipfileset src="${one-jar.ant.jar}" includes="**/Testable.class"/>
<main>
<fileset dir="classes/test"/>
</main>
<lib>
<fileset dir="lib" includes="*.jar" />
</lib>
<binlib>
<fileset dir="binlib" includes="*.dll"/>
</binlib>
</one-jar>
<delete dir="${temp.dir}" />
</target>
<property name="formatter" value="xml" />
<!-- Test the distribution -->
<target name="junit.report.DSEConstructionKIT" depends="build" description="JUnit test of DSEConstructionKIT">
<antcall target="junit.DSEConstructionKIT" />
<antcall target="junit.report"/>
</target>
<target name="junit.DSEConstructionKIT" depends="build">
<echo>********** junit-DSEConstructionKIT.jar</echo>
<junit fork="yes" showoutput="no" printsummary="yes">
<jvmarg value="-Done-jar.verbose=true" />
<jvmarg value="-Done-jar.jarname=${basedir}/build/test-DSEConstructionKIT.jar" />
<classpath>
<fileset file="${basedir}/build/test-DSEConstructionKIT.jar" />
<path refid="one-jar.libraries"/>
<path location="classes/junit" />
</classpath>
<!-- Uses Invoker to set up a JUnit test bridge -->
<test name="com.bosch.dse.zanger.test.DSEConstructionKITSuite" todir="${test.results.dir}" outfile="DSEConstructionKITSuite" />
<formatter type="${formatter}" usefile="yes" />
</junit>
</target>
<target name="run.DSEConstructionKIT" depends="build" description="Run a One-Jar DSEConstructionKIT">
<java fork="true" jar="build/DSEConstructionKIT.jar"/>
</target>
<target name="test.DSEConstructionKIT" depends="build" description="Stand-alone test a One-Jar DSEConstructionKIT">
<java fork="true" jar="build/test-DSEConstructionKIT.jar"/>
</target>