Bekomme keine lauffähige jar (netbeans/gradle)

J

Joob

Bekanntes Mitglied
Ich versuche eine lauffähige jar zu erzeugen.
In der Gradlestruktur wird auch eine Jar erzeugt und enthält alles inkl. der Resources, es fehlen aber die Abhänigkeiten.
Daneben werden im Verzeichnis Distributions zwei kompremierte Dateien erzeugt, die die jar und alle abhängigen jars enthalten.
Leider läuft da gar nichts.
12511


Ich möchte eigentlich keine fatjar erzeugen, sondern die Jar und dann dann die Abhängigkeiten in einem Verzeichnis, ich fand das
so wie ANT es automatisch gemacht hat ganz übersichtlich.

Ich muss wohl in meinem build.gradle noch Eintragungen in dem Bereich JAR machen,
allerdings sind Lösungsvorschläge für mich sehr verwirrend und ich möchte es vermeiden weiter Abhängigkeiten zu verwenden.

Hier ist mein build.gradle und meine Projektstruktur, kann mir jemand einen Tipp geben, was ich tun muss ?

Ich habe meine Versuche mit jar{} rausgenommen, weil ich nicht so ganz verstehe was da passiert.
Außerdem fehlt meinem Projekt wohl auch eine Manifest Datei in der nochmals die Main angegeben wird. (Muss ich die anlegen, steht doch schon im build.gradle)

Code:
plugins {
  id 'java'
  id 'application'
  id 'jacoco'
  id 'org.openjfx.javafxplugin' version '0.0.8'
 
}


repositories {
    
    jcenter()

}



dependencies {

    compile group: 'org.json', name: 'json', version: '20171018'
    compile group: 'com.jcraft', name: 'jsch', version: '0.1.50'
    compile group: 'commons-net', name: 'commons-net', version: '3.6'
    compile group: 'net.lingala.zip4j', name: 'zip4j', version: '1.2.4'
    compile group: 'com.googlecode.soundlibs', name: 'jlayer', version: '1.0.1.4'
    
    // JASPER
    compile group: 'xerces', name: 'xercesImpl', version: '2.8.0'                       // wegen der Verwendung von Grammatiken durch jasper
    compile group: 'com.lowagie', name: 'itext', version: '2.1.7'                       // abhängigkeit von jasper
    compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.10.0'     // ACHTUNG Version muss im Jasper Studio angepaßt sein, siehe Systemhandbuch : Reports   
    
    testCompile 'junit:junit:4.12'
    
    
        
}


javafx {
    
    modules = [ 'javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.media', 'javafx.swing', 'javafx.web' ]
    version = "13"
}




mainClassName = 'org.joobsoft.vt.MAIN.Main'


12512
 
J

Joob

Bekanntes Mitglied
Ich habe jetzt mal versucht die Distribution auf dem Desktop zu entpacken und dann über Comand auszuführen.
Dann bekomme ich folgende Fehlermeldung.

12513


Die Javafx Komponeten sind aber in dem Paket. Wie man sieht.

12514
 
J

Joob

Bekanntes Mitglied
Habe jetzt eine neue Main geschrieben die nichts tut als die alte aufzurufen.
Dann läuft es

Aber nur wenn man die .bat aus dem Distributionenpaket aufruft.
Das ist alles Mist. Kack gradel.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Ersterer Fehler hat nichts mit gradle zu tun, sondern liegt am nicht-nutzen des Modulsystems.


Das man das über die bat startet, ist genau so gedacht. Du kannst das auch ohne bat starten, musst dann halt nur die entsprechenden Kommandozeilen-Parameter per Hand eingeben (was niemand möchte)
 
J

Joob

Bekanntes Mitglied
@mrBrown : Das hat doch bei Ant einwandfrei geklappt,
hab ich das nicht richtig konfiguriert ?

Ich brauche eine ausführbare JAR, das muss doch auch mit Gradel konfigurierbar sein.
 
J

Joob

Bekanntes Mitglied
@mrBrown
Ich probiers gleich mal so
dann hab zwar eine fatjar, gibt es da sinnvolle Größenbeschränkungen ?
Ich will daraus hinterher eine exe machen.

Code:
plugins {
  id 'java'
  id 'com.github.johnrengelman.shadow' version '1.2.2'
}
...
...
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'
...
...
mainClassName = 'com.acme.myapp.MyClassMain'
...
...
...
shadowJar {
    baseName = 'myapp'
}
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
@mrBrown : Das hat doch bei Ant einwandfrei geklappt,
hab ich das nicht richtig konfiguriert ?

Ich brauche eine ausführbare JAR, das muss doch auch mit Gradel konfigurierbar sein.
Was kam denn mit ant am Ende raus?

Das dürftest du mit gradle alles nachbauen können. Vermutlich müsstest du nur das Manifest der Jar anpassen, und alle Deps in ein passendes Verzeichnis kopieren, das dürfte mit Gradle kein Hexenwerk sein (ich wüsste es grad nur für Maven).

dann hab zwar eine fatjar, gibt es da sinnvolle Größenbeschränkungen ?
Ich will daraus hinterher eine exe machen.

Keine Ahnung, bisher hab ich keine erreicht.

Für eine exe (warum denn überhaupt?) wäre uU auch jpackager interessant.
 
J

Joob

Bekanntes Mitglied
@mrBrown:

Ich verwende Lanch4j um aus der ja eine exe zu machen und all das Zeug wie ICON, Startbild usw. mitzugeben.
Die Exe bau ich dann in ein Setuppaket ein. (InnoSetup)

Das ist entstanden aus dem Ergebnis des Ant Builds und gefällt mir gut.
Ich würde mich natürlich über eine Vorschlag freuen der das noch erleichtert oder verbessert.

Bis dahin würde ich gerne Gradel dazu bringen
mir eine ausführbare Jar zu erzeugen und wenn möglich
die Libs in einen separaten Verzeichnis zu speichern und in der jar den pfad zu den Abhänigkeiten mit anzulegen.

So sah das bei ANT aus

ausführbareJAR.jar

(folder) libs
(folder) webfiles

wofür der folder webfiles war hat sich mir nicht erschlossen, aber in libs lagen die nun unter dependencies eingetragenen Libaries

wenns anders nicht möglich ist auch eine fatjar, ich mach mir nur ein wenig Sorgen wegen der Größe, die würde min. 30 MB und das müsste doch schlechten Einfluss auf die Ladezeit und Laufzeit haben oder ?
 
J

Joob

Bekanntes Mitglied
@mrBrown : könnntest du noch mal schauen, bin jetzt ein ganzes Stück weiter

erst einmal das aktuelle gradle.build
Code:
plugins {
  id 'java'
  id 'java-library-distribution'
  id 'application'
  id 'jacoco'
  id 'org.openjfx.javafxplugin' version '0.0.8'


}


repositories {
   
    jcenter()

}



dependencies {

    compile group: 'org.json', name: 'json', version: '20171018'
    compile group: 'com.jcraft', name: 'jsch', version: '0.1.50'
    compile group: 'commons-net', name: 'commons-net', version: '3.6'
    compile group: 'net.lingala.zip4j', name: 'zip4j', version: '1.2.4'
    compile group: 'com.googlecode.soundlibs', name: 'jlayer', version: '1.0.1.4'
   
    // JASPER
    compile group: 'xerces', name: 'xercesImpl', version: '2.8.0'                       // wegen der Verwendung von Grammatiken durch jasper
    compile group: 'com.lowagie', name: 'itext', version: '2.1.7'                       // abhängigkeit von jasper
    compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.10.0'     // ACHTUNG Version muss im Jasper Studio angepaßt sein, siehe Systemhandbuch : Reports  
   
    compile group: 'org.openjfx', name: 'javafx-controls', version: '13'
   
    testCompile 'junit:junit:4.12'
   
   
       
}

javafx {
    modules = [ 'javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.media', 'javafx.swing', 'javafx.web' ]
    version = "13"
}



application {
    mainClassName = 'org.joobsoft.vt.MAIN.Main'
}



// zur Erstellung runable jar
jar {
       
    archiveName = 'VTD.jar'
   
    // Keep jar clean:
    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'

    manifest {
        attributes 'Main-Class': 'org.joobsoft.vt.MAIN.Main',
                   'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
    }
    // How-to add class path:
    //     https://stackoverflow.com/questions/22659463/add-classpath-in-manifest-using-gradle
    //     https://gist.github.com/simon04/6865179
}

Es wird nun eine Jar erzeugt, die sollte runable sein (woran kann ich das sehen)
Allerdings werden in der distribution alle libs doppelt eingebaut, ich zeig mal einen Screenshot
12516


Wenn ich die Batch aufrufe, dann läuft alles planmäßig, aber das ist ja nicht mein Ziel
Wenn ich die jar aufrufe bekomme ich folgenden Fehler: im cmd

C:\Users\Jupp>java -jar C:\Users\Jupp\Desktop\VTDESKTOP\lib\VTD.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:823)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:721)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:644)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.joobsoft.vt.MAIN.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 10 more

obwohl die Main gar kein FX enthält, das wird erst in der MainFX importiert
Code:
package org.joobsoft.vt.MAIN;

/**
*
* @author Jupp
*/
public class Main {
        public static void main(String[] args) {
        MainFX.main(args);
    }
}

Im Manifest stehen aber die ganzen Fx drin:
Manifest-Version: 1.0
Main-Class: org.joobsoft.vt.MAIN.Main
Class-Path: lib/json-20171018.jar lib/jsch-0.1.50.jar lib/commons-net-3.
6.jar lib/zip4j-1.2.4.jar lib/jlayer-1.0.1.4.jar lib/xercesImpl-2.8.0.j
ar lib/jasperreports-6.10.0.jar lib/itext-2.1.7.jar lib/javafx-controls
-13.jar lib/junit-3.8.2.jar lib/xml-apis-1.3.03.jar lib/bcmail-jdk14-13
8.jar lib/bcprov-jdk14-138.jar lib/commons-digester-2.1.jar lib/commons
-beanutils-1.9.3.jar lib/castor-xml-1.4.1.jar lib/castor-core-1.4.1.jar
lib/commons-logging-1.2.jar lib/commons-collections4-4.2.jar lib/jfree
chart-1.0.19.jar lib/jcommon-1.0.23.jar lib/ecj-4.4.2.jar lib/jackson-d
atabind-2.9.9.jar lib/jackson-core-2.9.9.jar lib/jackson-annotations-2.
9.9.jar lib/javafx-graphics-13.jar lib/bctsp-jdk14-1.38.jar lib/commons
-collections-3.2.2.jar lib/commons-lang3-3.4.jar lib/javax.inject-1.jar
lib/javafx-base-13.jar lib/bcmail-jdk14-1.38.jar lib/bcprov-jdk14-1.38
.jar

Kannst du mir die Ursachen erklären ?
Viel scheint nicht mehr zu fehlen um das zum Laufen zu bringen, oder ?
Wahrscheinlich ist die jar nicht runable, aber wie bekomme ich das dem gradle beigebracht.
 
J

Joob

Bekanntes Mitglied
@mrBrown

Hab mich so auf das runable jar und meine alte ANT jar fixiert, das ich gar nicht in Erwägung gezogen habe aus der Batch ne Exe zu machen und es dann so in mein Setup zu bauen.

Probier ich jetzt erst mal, allerdings wundert es mich schon das in der Distribution die Files doppelt sind.
Habe jetzt auch mal das Build.gradel auf ein Minimum reduziert
 
J

Joob

Bekanntes Mitglied
Ich hab mir mal jpackager angesehen, würde der nicht an der Struktur von gradle scheitern ?

myinput/
myapp.jar
lib/
lib1.jar
lib2.jar

gradle

myinput/
bin/
batchfile
lib/
Klassen
 
J

Joob

Bekanntes Mitglied
@mrBrown

läuft jetzt, die doppelten Einträge wurden durch
id 'java-library-distribution'
id 'application'

erzeugt,
id 'application'
reicht.

Habe jetzt einige Wochen darauf verwendet die IDE umzustellen alle Libs upzudaten und als Build Tool Gradel einzusetzen,
ich wollte endlich die Probleme die nichts mit der eigentlichen Programmierung zu tun haben erledigt habe,
aber bei jedem Schritt kam eins dazu. Das ist so unübersichtlich und man weiß einfach nicht wie man das anfassen soll und
das frustriert.

Bin aber so zufrieden und denke das nun alles für mich nachvollziehbar ist.

Schönen Dank für deine Hilfe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse JavaFX JDK 12 - bekomme mein Projekt nicht mehr compiliert IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 36
G wo bekomme ich libs her IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
F Wie bekomme ich diese Profiler zum Laufen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
T Eclipse - Keine Vorschläge außerhalb main-Methode IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
J NetBeans gradle Projekt, unter neu keine Auswahl JavaFX IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
C Eclipse Eclipse - WindowBuilder hängt sich auf (Keine Rückmeldung) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Inteelij lässt keine Eingaben zu IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
J Eclipse Mir werden keine Werte beim Debugging angezeigt. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
V Eclipse zeigt keine Errors an! IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Eclipse Fertiges Programm enthält keine Bilder mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
J Eclipse E(fx)clipse bringt keine vorschläge mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
M Eclipse Ich kann keine Workspace erstellen/auswählen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
NicoDeluxe Eclipse zeigt keine Documentation bei eigener Methode IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
A IDEA IntelliJ IntelliJ Maven oder Webprojekt, kann keine normalen Java Klassen erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
Thallius Keine Exceptions mehr in Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
Y GIT remote Problem keine Synchronisation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
C Netbeans - keine Sourcen in jar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
H Eclipse Keine JRE installiert IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
G [Launch4j] Keine Commandline Ausgaben bei exe IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
G NetBeans Editor Hints haben keine Auswirkung IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
D NetBeans Keine Resourcen in erzeugtem Jar-File IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
I NetBeans Importierter "Swingcode" - keine Design ansicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
Unsympath Eclipse Eclipse zeigt keine Proposals und schließt Strings nicht automatisch IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
C Eclipse Open Type soll keine .class anzeigen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
M JBuilder Kann keine GUI erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
M Eclipse versteht keine Generics IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 18
Meldanor NetBeans 6.8 - Persistence - keine Klassen werden angelegt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
H Eclipsefehler wenn while schleife keine methode beinhaltet IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
S Eclipse: Nach Absturz lassen sich keine Dateien mehr öffnen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
J Eclipse erzeugt mir keine .class-Dateien mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Netbeans findet keine Usages IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
K Netbenas bekommt keine Verbindung zum Netz IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
ARadauer keine errors in packeage explorer und navigator im eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
J Eclipse keine Autovervollständigung IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
byte hbm2ddl.auto - Warum werden keine ForeignKeys erzeugt? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
P Eclipse Visual Editor keine Patterns und keine Anzeige IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
F Java 6 Keine Hilfe in Eclipse verfügbar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 21
A Eclipse: Keine Fehleranzeige, keine Code Completion. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M Java in der Schule - welche IDE (oder keine?) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 15
F Keine schliessenden Klammern in Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N JBuilder X für Linux: keine Quelltextanzeige mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
A [JBuilder] - Keine Hilfe vorhanden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
J Lauffähige JAR-Datei erstellen mit Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben