Исполняемый Jar: не удалось загрузить main (но main находится в ANT xml) - PullRequest
0 голосов
/ 09 января 2019

Когда я запускаю файл JAR через терминал, у меня нет проблем. Однако, когда я поместил его на компьютер моего клиента, он выдал следующую ошибку (когда я попробовал через терминал:

Error: could not find or load main class base.Main.

Caused by: NoClassDefFoundErrors javafx/application/Application

Обычно я предполагаю, что Мейн не был включен. Тем не менее, я экспортировал также ANT XML (включен ниже) и base.Main, где мой главный должен быть. Я также сбит с толку, потому что могу без проблем запустить исполняемый файл jar через терминал на моей машине.

Я использую функцию экспорта работоспособного фляги в STS. Я пытался экспортировать несколько раз. Я пытался изменить настройки экспорта (циклически переключая параметры). Я подтвердил, что у моего клиента был действительный JDK, хотя я сомневаюсь, что это будет проблемой.

* Я потратил два часа на поиск ответов. Хотя я уверен, что есть похожие вопросы, я еще не нашел, когда это точно соответствует моей проблеме. Если вы видели, не стесняйтесь опубликовать его.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for 
Project BLIS with Jar-in-Jar Loader">
<!--this file was created by Eclipse Runnable JAR file Export 
Wizard-->
<!--ANT 1.7 is required-->
<!--define folder properties-->
<property name="dir.buildfile" value="."/>
<property name="dir.workspace" value="${dir.buildfile}"/>
<property name="dir.jarfile" value="/Users/me/Documents"/>
<target name="create_run_jar">
    <jar destfile="${dir.jarfile}/BLIS.jar">
        <manifest>
            <attribute name="Main-Class"            
value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
            <attribute name="Rsrc-Main-Class" value="base.Main"/>
            <attribute name="Class-Path" value="."/>
            <attribute name="Rsrc-Class-Path" value="./ spring-jdbc-3.2.11.RELEASE.jar spring-jdbc-3.2.11.RELEASE.jar mysql-connector-java- 
8.0.13.jar joda-time-2.10.1.jar"/>
            </manifest>
            <zipfileset src="jar-in-jar-loader.zip"/>
            <fileset dir="${dir.workspace}/BLIS/bin"/>
        </jar>
    </target>
</project>

Я знаю, что ожидать, что вещи "просто сработают", нереально. Проблема в том, что я не уверен, где я все испортил. Это потому, что Main-Class является загрузчиком ресурсов, а не base.Main? Я не использовал этот экспортер раньше, но я предполагаю, что он «загружает ресурс» перед проверкой, существует ли main.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 января 2019

Это должно происходить главным образом из-за недоступности javafx.application.Application class в classpath на клиентском компьютере, даже если он есть на вашем компьютере.

Oracle по умолчанию содержит javafx, а OpenJDK - нет. Если это OpenJDK, то вам нужно будет отдельно установить openjfx.

Лучше проверьте версию Java на обеих машинах и сравните.

Надеюсь, это поможет вам в решении вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...