NetBeans Buildprozess inkludiert nicht die Classpath-Pakete (Java Ant)

Diskutiere Buildprozess inkludiert nicht die Classpath-Pakete (Java Ant) im IDEs und Tools Bereich.
M

Maliko

Moin,

ich hab da grad ein kleines Problem. Und zwar wollte ich meinen Webservice den ich mit Netbeans geschrieben habe (und der auch einwandfrei funktioniert, wenn ich ihn mit Netbeans starte) gerade zusammenbauen und dann testweise einmal über die Konsole ausführen und das Ding crashed instant mit folgender Fehlermeldung:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/Service
        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:802)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at asekvwebservice.ASEKVServiceImpl.<init>(ASEKVServiceImpl.java:74)
        at asekvwebservice.ASEKVWebservice.main(ASEKVWebservice.java:47)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.Service
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 11 more
Unter anderem Fehlt im dist-Verzeichnis auch der komplette Lib-Ordner, der unter Netbeans 8 in Verbindung mit Java SE 1.8 noch automatisch hinzugefügt wurde.

Ich hab die Entsprechenden Klassen, die nachgeladen werden müssen ganz normal in den Properties unter Libraries->Compile->Classpath eingetragen und über Netbeans werden die auch ganz normal gezogen. Allerdings werden die beim Buildprozess scheinbar einfach ignoriert.

Hat da zufällig jemand ne Lösung?
 
T

Tobias-nrw

Füge das in die pom.xml in "project" ein:
XML:
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>path.to.Main</mainClass>
                        </manifest>
                    </archive>

                </configuration>
                <executions>
                    <execution>
                        <id>assemble-all</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Und bitte die korrekte Main-Klasse (darin public static void main()...) angeben.
 
M

Maliko

Nein Ant. hatte ich auch extra in den Threadtitel mit reingeschrieben.
 
M

Maliko

Nein das funktioniert nicht. In dieser Anleitung geht es darum die Files alle in die Jar reinzupacken, anstatt ein lib-Verzeichnis mitzuschleppen. Mein Problem ist, dass er das lib-Verzeichnis überhaupt nicht erst erstellt.

EDIT: Ich nutze übrigens Netbeans 11 inzwischen.
 
M

Maliko

Ich habe noch nie etwas mit Maven gemacht und mir sitzt die Zeit im Nacken also nein, Maven kommt nicht in Frage.
 
N

Neumi5694

In Nebeans 11 muss man anders vorgehen, musste ich selbst erst rausfinden.
Du wirst feststellen, dass nicht nur der lib-Ordner fehlt, in deiner Jar ist auch das Manifest nicht komplett ausgefüllt, der Classpath fehlt.
Netbeans 11 unterscheidet zwischen Build und Release.
Um dein komplettes Release-Verzeichnis zu kriegen, wähle im Projektmenü "Package as" und dann "Image Only".

Das erstellt das Verzeichnis in der Form, die du erwartest, außerdem noch ein Unterverzeichnis "bundles", in dem dann eine ausführbare Version inklusive Runtime und ausführbarer Datei.
Diese nutze ich jedoch nicht, da er die KOMPLETTE Java Runtime (200 MB) mit reinpackt, anstatt der benötigten 32 MB. Das kann man wohl umgehen, indem man module-info verwendet, das hab ich aber noch nicht ausprobiert. Außerdem ist da noch der Wurm drin, da er die Main-Klasse nicht findet.
Ich erstell Runtime selbst (per "jdeps" und "jlink") und lass die .exe mit "launch4j" erstellen.
 
Thema: 

Buildprozess inkludiert nicht die Classpath-Pakete (Java Ant)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben