Es geht, wie der Titel schon vermuten lässt um das Einbinden von externen Libraries.
Ich habe sehr wohl danach gegoogelt und die Forensuche benutzt. Es gibt schon tausend Anfragen deshalb, ich weiß.
Ja ich habe die jar(s) mittels Rechtsklick - Properties - Libraries eingebunden, ja sie stehen drin und werden von Netbeans auch gefunden (ich kann ja imports und dergleichen tätigen) und erscheinen links im Libraries-Container.
Wenn ich nun compiliere / build main project wird kein Ordner lib unter dist erzeugt.
Ich habe diese Probleme mit NetBeans und eclipse. IRGENDWAS muss ich doch falsch machen
Beim jdbc-Treiber hat es funktioniert, dass ich einfach selbst einen Ordner lib unter dist erstelle und die jar dort einfüge. Mit einer anderen Library klappt das aber nun nicht.
Es lief unter Vista nicht und jetzt unter XP genau das gleiche Problem.
Im jar-Archiv ist auch nix mit drin, hab reingeschaut. Was hab ich nun übersehen?
ist mir klar, darum sollen die Libs ja auch außerhalb der jar in nem parallelen Ordner liegen. ist das falsch? Soll ich die entpacken? Dann wäre die Auswahlmöglichkeit "import jar" ja ziemlich sinnfrei..
Hallo Gast,
was für ein Projekt hast Du denn in Netbeans (welche Version eigentlich?) erstellt?
Netbeans 6.1 (und automatisch von der IDE erstelltes Ant-Skript):
Beim Projekttyp JavaApplication werden die eingebundenen Libs beim Build mit 'kopiert', also ein Unterverzeichnis ./lib erstellt...
Beim Projekttyp JavaClassLibrary z. B. nicht....
ich nutze die NetBeans-Version 6.0.1 in Verbindung mit Java 1.6.
Beim Projekttyp hab ich normal JavaApplication ausgewählt, wie du auch schon meintest.
Dass der Ordner lib erstellt werden müsste, weiß ich, wird er aber nicht
In der Manifest-Datei taucht auch kein neuer Class-Path-Eintrag auf.
Muss ich noch irgendwas einstellen oder reicht unter Libraries die jar zu adden? (Build Projects on Classpath ist auch angehackt)
NetBeans-intern funktioniert es ja wie gesagt, nur außerhalb dann nicht.
Sinn und Zweck, jedes mal manuell in der Manifest rumzuschreiben, ist es ja sicherlich auch nicht.
Hallo,
es reicht aus die benötigte Lib (.jar) hinzuzufügen.
Nach einem Build wird in deinem dist-verzeichnis auch eine Readme.txt angelegt.
Dort sind unter 'Notes:' Ausnahmen zu finden in denen dieses Kopieren nicht stattfindet.
Trifft davon vlt. etwas auf Dein Projekt zu?
hth
Notes:
* If two JAR files on the project classpath have the same name, only the first
JAR file is copied to the lib folder. * Only JAR files are copied to the lib folder.
If the classpath contains other types of files or folders, none of the
classpath elements are copied to the lib folder. In such a case,
you need to copy the classpath elements to the lib folder manually after the build.
* If a library on the projects classpath also has a Class-Path element
specified in the manifest,the content of the Class-Path element has to be on
the projects runtime path.
* To set a main class in a standard Java project, right-click the project node
in the Projects window and choose Properties. Then click Run and enter the
class name in the Main Class field. Alternatively, you can manually type the
class name in the manifest Main-Class element.
Hallo, danke dass du dir die Mühe machst, yajp Es ist echt ein Problem, wenn man das bei keinem Projekt hinkriegt und die Lösung ist wichtig...vielleicht ist es auch nur was kleines.
In meinem dist-Ordner wurde noch nie etwas anderes als das jar-Archiv abgelegt.
Ich habe mal einen Screenshot angehängt, da sieht man, wie ich die jars importiert habe.
Sorry, falls externes Verlinken fehl am Platze ist, der Upload unter Dateien im Forum hat nicht funktioniert.
Ich glaube nicht, dass etwas aus deinem Zitat anwendbar ist. Es ist ja auch nicht so, dass es eine exotische lib wäre, es ist z.B. einfach nur der JDBC-Treiber.
Von wo aus ich die lib importiere ist sicherlich auch egal?
was meinst Du mit 'von wo aus Du....' .
Die Libs müssen nicht lokal auf Deinem Rechner liegen falls Du das meinst.
Propier doch einfach mal die Lib lokal auf Deinen Rechner zu kopieren.
Hast Du eine Main-Klasse angegeben? (Project-properties-Run)
Wie sieht denn die Manifest aus die Netbeans erzeugt?
ich meinte, dass die nun vom Ordner build oder so eingebunden werden müssen. Kann ja sein, dass das selbstverständlich ist und ich das die ganze Zeit falsch mache
Sind natürlich lokal in nem Extraordner im Projekt.
Die erzeugte Manifest sieht so aus:
Code:
Manifest-Version:1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b19(Sun Microsystems Inc.)
X-COMMENT: Main-Class will be added automatically by build
Die wird also beim Build nicht verändert.
Wenn ich manuell den lib-Ordner in die Manifest-Datei schreibe, gehts natürlich.
Main-Klasse ist keine angegeben, weils ein Applet ist.
Wies aussieht, krieg ich das Problem nicht gelöst Also muss ich alles manuell machen.
Ich probier heut mal, ob das gleiche auf nem anderen Rechner auch passiert.
Hallo,
solange Du keine Main-Klasse defninierst wird NetBeans die Libs nicht automatisch kopieren.
NetBeans Hilfe hat gesagt.:
For Standardprojects that have a main class is specified, the IDE automatically copies any JAR files on the project's classpath to the dist/lib folder. The IDE also adds each of the JAR files to the Class-Path element in the application JAR's manifest.mf file. This simplifies running the application outside the IDE. For more information, see Preparing a JAR for Deployment Outside the IDE
Das ist gut zu wissen
Leider hat ja ein Applet keine Main-Class, da ist es nicht verwunderlich, dass jegliches manuelles Eintragen einer Main-Class fehlschlägt.
Bei einer Java Application funktioniert es, ich habe es grad probiert.
Also weiß ich jetzt wonach ich mal weiter recherchieren kann, vielleicht gibt es noch eine zufriedenstellendere Lösung als beim Applet den manuellen Weg zu wählen.
so, hab mich nochmal schlau gemacht.
Man muss trotzdem eine Main-Class eintragen (nicht durch Browse sondern manuell). Hatte das gestern schon mal probiert, jedoch fälschlicherweise noch ein .class hintendran gehängt, es muss also nur heißen: Package.Classname