Hi,
ich versuche meine JavaFX Application als executable jar zu exportieren. Man will sie ja evtl weitergeben und nicht immer die IDE dafür starten.
Jetzt hab ich das Problem, dass sich die jar nicht ausführen lässt. Nach einem Doppelklick passiert nichts. Im Windows Task Manager allerdings wird pro "Ausführung der Jar" ein Eintrag mit dem Namen "Java TM Platform SE Binary" aufgeführt. Diese muss ich dann manuell beenden.
Also scheint sie zumindest ausgeführt zu werden, aber ich sehe eben nichts.
Um zu testen, ob es irgendwo Fehler gibt, habe ich alles geloggt (log4j). In meiner log4-xml habe ich die Pfade relativ angegeben. Ich nahm an, dass diese auch erstellt werden, wenn die Applikation deployed wird. Dies ist allerdings nicht der Fall und dementsprechend wird auch nichts geloggt. Ob nun vorher ein Fehler auftritt oder nicht, ist nicht feststellbar. Schöner Bockmist.
Die Dependencies werden benötigt (h2, opencv (1 jar, 1 dll), uvm), damit das Programm funktioniert. Aus der IDE funktioniert ja alles einwandfrei.
Wie bin ich vorgegangen?
In IntelliJ gibt es sogenannte Artefakte, ein Template für JavaFX Applikationen ist bereits vorhanden, so musste ich nur noch die Main Class auswählen sowie ein Manifest erstellen. Fertig.
Benutze ich maven mit folgendem Eintrag (wobei die Main Class selbstverständlich korrekt ersetzt wurde) in der POM
bekomme ich einen Fehler, nachdem ich versuche, das Projekt im cmd mit "mvn package -e" zu deployen
Der Fehler sagt mir überhaupt nichts und ich werde auch nicht schlau draus. Ok, ArrayOutOfBounceException irgendwo weit hinten. Angeblich. Welche XML will er da denn lesen? Die Pom.xml? Soll ich raten oder was...
IntelliJ meckert nicht rum, alles korrekt. Jedoch funktioniert die jar nicht.
Also wie ichs mache, ist es falsch. Kann mir jemand helfen? Ich drehe durch.
ich versuche meine JavaFX Application als executable jar zu exportieren. Man will sie ja evtl weitergeben und nicht immer die IDE dafür starten.
Jetzt hab ich das Problem, dass sich die jar nicht ausführen lässt. Nach einem Doppelklick passiert nichts. Im Windows Task Manager allerdings wird pro "Ausführung der Jar" ein Eintrag mit dem Namen "Java TM Platform SE Binary" aufgeführt. Diese muss ich dann manuell beenden.
Also scheint sie zumindest ausgeführt zu werden, aber ich sehe eben nichts.
Um zu testen, ob es irgendwo Fehler gibt, habe ich alles geloggt (log4j). In meiner log4-xml habe ich die Pfade relativ angegeben. Ich nahm an, dass diese auch erstellt werden, wenn die Applikation deployed wird. Dies ist allerdings nicht der Fall und dementsprechend wird auch nichts geloggt. Ob nun vorher ein Fehler auftritt oder nicht, ist nicht feststellbar. Schöner Bockmist.
Die Dependencies werden benötigt (h2, opencv (1 jar, 1 dll), uvm), damit das Programm funktioniert. Aus der IDE funktioniert ja alles einwandfrei.
Wie bin ich vorgegangen?
In IntelliJ gibt es sogenannte Artefakte, ein Template für JavaFX Applikationen ist bereits vorhanden, so musste ich nur noch die Main Class auswählen sowie ein Manifest erstellen. Fertig.
Benutze ich maven mit folgendem Eintrag (wobei die Main Class selbstverständlich korrekt ersetzt wurde) in der POM
Code:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>main.mainclass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
bekomme ich einen Fehler, nachdem ich versuche, das Projekt im cmd mit "mvn package -e" zu deployen
java.lang.ArrayIndexOutOfBoundsException: 19437
at org.codehaus.plexus.util.xml.pull.MXParser.parsePI(MXParser.java:2502)
at org.codehaus.plexus.util.xml.pull.MXParser.parseEpilog(MXParser.java:1604)
at org.codehaus.plexus.util.xml.pull.MXParser.nextImpl(MXParser.java:1434)
at org.codehaus.plexus.util.xml.pull.MXParser.next(MXParser.java:1131)
at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3856)
at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:595)
at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:109)
at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:82)
at org.apache.maven.model.building.DefaultModelProcessor.read(DefaultModelProcessor.java:81)
at org.apache.maven.model.building.DefaultModelBuilder.readModel(DefaultModelBuilder.java:535)
at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1097)
at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:829)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:331)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:321)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:199)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:544)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:528)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:418)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:372)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:360)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.doRecurse(DefaultDependencyCollector.java:513)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:467)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:372)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:360)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:263)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:325)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:169)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:127)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:246)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Der Fehler sagt mir überhaupt nichts und ich werde auch nicht schlau draus. Ok, ArrayOutOfBounceException irgendwo weit hinten. Angeblich. Welche XML will er da denn lesen? Die Pom.xml? Soll ich raten oder was...
IntelliJ meckert nicht rum, alles korrekt. Jedoch funktioniert die jar nicht.
Also wie ichs mache, ist es falsch. Kann mir jemand helfen? Ich drehe durch.