# externe Library NetBeans / eclipse



## Guest (11. Jun 2008)

Hallöchen!

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?

Bitte helft mir


----------



## Wildcard (11. Jun 2008)

Das jar in jar nicht funktioniert weißt du aber, oder?


----------



## Guest (12. Jun 2008)

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..


----------



## yajp (12. Jun 2008)

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.... 

Grüsse


----------



## Guest (12. Jun 2008)

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.


----------



## yajp (12. Jun 2008)

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.
> ...


----------



## Knusperflocke (12. Jun 2008)

das unter eclipse und NetBeans der Fehler auftritt ist komisch. Dann scheint es nix NetBeans internes zu sein?


----------



## Guest (12. Jun 2008)

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?


----------



## yajp (12. Jun 2008)

Nochmal Hallo 

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?



Grüsse


----------



## Guest (12. Jun 2008)

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:


```
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.


----------



## yajp (12. Jun 2008)

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



hth


----------



## Guest (12. Jun 2008)

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.

Vielen vielen Dank für deine Geduld :toll:


----------



## Guest (13. Jun 2008)

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

Problem gelöst


----------

