Einbinden von externen Java und C Bibliotheken

nabla

Mitglied
Hi,

ich habe ein Programm mit Eclipse geschrieben, welches mehrere externe Java Bibliotheken (zum Beispiel als jar auf der entsprechenden Projekt-Seite herunterladbar) benoetigt. In Eclipse habe ich diese Bibliotheken angegeben, so dass es laeuft. Erzeuge ich zum Beispiel ein Runnable Jar file klappt alles und ich kann das jar komplett ohne die Bibliotheken oder irgendwelche path Angaben laufen lassen.

Nur wie verteile ich den Code jetzt? So wie ich das verstehe, ist Ant fuer sowas gedacht. Ich habe mal testweise Eclipse ein Ant file erzeugen lassen, das hat aber die Verzeichnisse zu den Bibliotheken hard coded. Was macht man da? Ich denke dabei an sowas wie ein ./configure.

Hinzu kommt noch, dass ich auch noch eine C Bibliothek fuer mein Programm benoetige (das dann aber nur zur runtime), kann man irgendwie testen, ob die vorhanden ist?

Danke fuer Anregungen!
 

Wildcard

Top Contributor
Ant ist nicht zum verteilen von irgendetwas gedacht, sondern zum builden.
Ant ist nur ein mögliches Buildtool, da gibt es auch noch Maven, Buckminster und viele andere.
Welches das richtige für dich ist hängt von deinen Anforderungen ab über die du bisher nicht viel gesagt hast.
 

nabla

Mitglied
Hi Wildcard,

vielleicht liegt da mein Missverstaendnis, denn ich habe das Gefuehl, ich sehe den Wald vor lauter Baeumen nicht... Damit ist das dann vielleicht auch das falsche Sub-Forum hier?!

Ich moechte einfach sowas wie die autoconf tools nur halt fuer mein Java Programm. Meine Vorstellung der Sache:
  1. Tar Package entpacken
  2. Test, ob alle Abhaengigkeiten erfuellt sind und Zusammenstellen der Pfade dafuer (wie ./configure)
  3. Build, welche vielleicht gleich eine executable erstellt
    Code:
    java -Xmx1234m  -classpath There/Are/My/Dependencies -jar my.jar
    (wie make)
Nicht mehr, nicht weniger. Alles, was die einzelnen Schritte vereinfacht, ist gut. Wie gesagt, ich arbeite in Eclipse, brauche mehrere externe Java-Bibliotheken, die ich den User von den entsprechenden Seiten herunterladen lassen moechte und brauche auch eine C-Bibliothek.
 

Siassei

Bekanntes Mitglied
Servus,

ich bin mir nicht sicher, aber möchtest du so etwas wie einen Installer basteln? Ähnliche wie im Linux-Umfeld, also ./configure, make, make install ?

Für derartiges gibt es in der (Java-)Welt viele Tools. Ant ist für derartie Aufgabe eher weniger geeignet, wie mein Vorredner schon sagt. Da in Java auf allen Platformen genau das gleiche .jar erzeugt wird. Das macht ein kompilieren auf der Zielplattform nicht nötig.

Mit Tools, wie z.B. Maven, würde sich so etwas realisieren lassen. Du musst lediglich beachten, dass du alles mitlieferst um den eingebetteten Modus benutzen zu können. Ich persönlich würde dich eher auf Scons oder Gradle verweisen. Für Scons gibt es bereits ein Eclipse-Plugin und ist somit schön zu benutzen. Obwohl die Qualität etwas zu wünschen lässt. Gradle ist noch in der Entwicklung und es werden erst am Ende des Jahres die ersten Plugin's für IDE's erscheinen. Gradle bietet die komplette funktionalität von Groovy und somit von der JRE. Zudem sind auch Repository's in einzelnen Ordner, sowie das Einbinden von einzelnen .jar's, möglich.
Ich persönlich würde auf Gradle setzen. Für Maven gibt es natürlich auch ein Native-Plugin, das du benutzen kannst.

Ich meine, du solltest mal deine Situation etwas genauer Beschreiben. Vielleicht lösst RPM bzw. DEP dein Problem?

Gruß,
Thomas
 

nabla

Mitglied
Hi Siassei,

danke fuer deine ausfuehrlichen Hinweise! Ich werde mal noch ein wenig beschreiben:

Ich habe ein (relativ uebersichtliches) Programm geschrieben, das (nichtsdestotrotz) aus mehrern packages besteht: mypackage.tools, mypackage.conf und mypackage.convert. In letzterem steht die Klasse mit der Main. Der Benutzer soll nun nicht lange in dem src Wust herumsuchen und halt eine (irgendwie) ausfuehrbare Sache praesentiert bekommen.

Dazu werden drei externe Bibliotheken benoetigt (netcdf, citygml4j und proj4). Die beiden ersteren sind als java-Version als jar verfuegbar und ich moechte, dass der Anwender sie herunterlaed, sie sollen nicht in mein (wie auch immer das dann aussieht) repository. proj4 gibt es komplett nur als C-Bibliothek. Die muss mit den richtigen Befehlen kompiliert sein und installiert sein. Die entsprechenden Java-Classen zum einbinden der C-Bibliothek habe ich in meinen Code.

Im System des Benutzers muss das Programm nicht direkt installiert werden, da es sehr speziellen Nutzen hat und auch nicht sehr oft ausgefuehrt werden muss. Ok, ich koennte also ein fertiges jar erzeugen. Nur wie ist das dann mit den Abhaengigkeiten? Die sollen da ja nicht mit rein. Wenn die aber nun geupdated werden (ich gehe mal davon aus, dass die Klassenstruktur etc. erhalten bleibt), laeuft es dann trotzdem? Ich kenne halt nur Probleme, wenn man mal eine C-Bibliothek updated, dass dann oft Programme, die dagegen dynamisch linken, nicht mehr funktionieren. Die einfach neu kompilieren, hilft. Gibt's sowas bei Java auch?

Ausserdem will ich halt auch den Quellcode zur Verfuegung stellen. Hier soll auch einer, der nicht viel Ahnung von Java hat, einfach mal den Emacs anfeuern koennen und zwei Zeilen reinhacken koennen. Beim Kompilieren sollte dann nach den externen Bibliotheken gefragt werden. Ehrlich gesagt, habe ich auch keine Ahnung, wie man die ganzen Klassen per Hand in der Konsole kompilieren wuerde, macht ja das eclipse alles....

Vermutlich sind die ganzen Tools overkill... So scheint es mir, eigentlich alles ganz klein...
 

Siassei

Bekanntes Mitglied
Servus,

zum Compilieren und Linken:
In Java musst du dir keine Sorgen machen. Das Laden, Linken, und Co. macht alles die JVM zur Laufzeit. Du musst lediglich beachten, dass du beim start angibst, wo der Classloader die Bibliotheken (.jar, .class, .so, .dll, ...) findet.

Quellcode und ausführbares Programm sollte man generell trennen bzw. getrennt anbieten. Mir scheint so, als handelt es sich hier um ein Schulungsprojekt (Schule oder Hochschule).
Bei allen Build-Tools kannst du den Ausgabe-Ordner angeben. Diesen kannst du z.B. bin oder lib taufen. Am einfachsten wird es, wenn du zwei Skripte (Shell, .sh oder .bat) beilegst und hier die nötigen Befehle zum kompilieren und zum starten des Programmes hinterlegst.
Build-Tools wie Maven und Gradle laden die Abhängigkeiten automatisch vom entfernten Server, sofern diese im Repository der öffentlichen Server vorhanden sind. Ist dies nicht der Fall, musst du die in deinem Archive mitliefern.
Scons besitzt diese Fähigkeit nicht.

Was ist auf den Ziel-Rechner installiert? Nur Emacs und sonst nichts? Beachte, dass du ein JDK für Java benötigst und einen C, Fortran, C++ oder ??? Compiler für die restlichen Projekte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
L Gradle Ein lokales Eclipse Projekt in Gradle dependency einbinden Tools - Maven, Gradle, Ant & mehr 2
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
H Maven Dependencies in runnable Jar einbinden Tools - Maven, Gradle, Ant & mehr 16
pkm Wie log4j in einem mvn-basierten Projekt einbinden? Tools - Maven, Gradle, Ant & mehr 2
X Maven Dependencies beim install mit in die Jar einbinden Tools - Maven, Gradle, Ant & mehr 6
S JAX-RS Klasse aus anderen Projekt einbinden Tools - Maven, Gradle, Ant & mehr 0
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
N Webservice Einbinden einer WSDL Tools - Maven, Gradle, Ant & mehr 11
D Jar Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 3
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
Miness Externe Library in Jar einbinden Tools - Maven, Gradle, Ant & mehr 8
X Maven Abhängigkeiten in die jar einbinden Tools - Maven, Gradle, Ant & mehr 10
F Applet Application in PHP einbinden? Tools - Maven, Gradle, Ant & mehr 5
M Java3D in Eclipse einbinden Tools - Maven, Gradle, Ant & mehr 4
D [maven] dll-resource einbinden - library.path setzen Tools - Maven, Gradle, Ant & mehr 4
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
reibi Maven : Resourcen NICHT mit einbinden beim Builden Tools - Maven, Gradle, Ant & mehr 10
ruutaiokwu manifest.mf - wie libraries einbinden? Tools - Maven, Gradle, Ant & mehr 7
D Bestehendes Projekt in Eclipse einbinden Tools - Maven, Gradle, Ant & mehr 6
ARadauer jar mit maven einbinden Tools - Maven, Gradle, Ant & mehr 10
C Executable in Jar einbinden Tools - Maven, Gradle, Ant & mehr 3
B Applet (Class-Datei(en)) in Html-Seite einbinden - Clipboard Tools - Maven, Gradle, Ant & mehr 13
G Applet in Jar-Format einbinden? Tools - Maven, Gradle, Ant & mehr 2
zilti Applet einbinden: Problem Tools - Maven, Gradle, Ant & mehr 6
A Hilfe! Java Applet Lake von Anfy - wie in HP einbinden? Tools - Maven, Gradle, Ant & mehr 25
S Applet in Jar umwandeln und dann auf eine Website einbinden Tools - Maven, Gradle, Ant & mehr 6
G Externes .jar in Java Applet einbinden Tools - Maven, Gradle, Ant & mehr 2
G Applet einbinden - was ist falsch? Tools - Maven, Gradle, Ant & mehr 3
G Pop up ins applet einbinden Tools - Maven, Gradle, Ant & mehr 7
G video in applet einbinden Tools - Maven, Gradle, Ant & mehr 2
D Problem beim einbinden von jar und class datei Tools - Maven, Gradle, Ant & mehr 8
E applet in browser einbinden Tools - Maven, Gradle, Ant & mehr 3
K Icons einbinden Tools - Maven, Gradle, Ant & mehr 6
T Java Applets dynamisch einbinden Tools - Maven, Gradle, Ant & mehr 5
M Applet in HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 9
D Java-Applet einbinden Tools - Maven, Gradle, Ant & mehr 5
G Applet in die HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 3
P Applet in HTML einbinden?? Tools - Maven, Gradle, Ant & mehr 14
L Jar mit externen Libaries erstellen Tools - Maven, Gradle, Ant & mehr 2
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
B Kleines Werkzeug zum Anzeigen von Mehrfachvererbung mit Interfaces in Java Tools - Maven, Gradle, Ant & mehr 5
D Java Programm veröffentlichen am Besten modular Tools - Maven, Gradle, Ant & mehr 28
H Maven Verbindung Java Projekt und Jenkins Build job Tools - Maven, Gradle, Ant & mehr 21
Q Java Eclipse Fehlermeldung bei Installation Tools - Maven, Gradle, Ant & mehr 3
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
R Webstart Java 11 ohne Web Start Tools - Maven, Gradle, Ant & mehr 5
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
R Java mitnehmen Tools - Maven, Gradle, Ant & mehr 14
W Java on Cloud - which Provider Tools - Maven, Gradle, Ant & mehr 0
S Python-Code mit Java ausführen Tools - Maven, Gradle, Ant & mehr 13
B Java auf Smartcards?! Tools - Maven, Gradle, Ant & mehr 9
J Java App im Mac Store veröffentlichen Tools - Maven, Gradle, Ant & mehr 0
M Maven (Java EE, WAR) Eigener Buildschritt - Manipulation von Dateien Tools - Maven, Gradle, Ant & mehr 4
VfL_Freak Desktopverknüpfung über den Java-Cache erstellen Tools - Maven, Gradle, Ant & mehr 0
S New version released: Java Switcher for 1.8.0_112 and Windows x64 only Tools - Maven, Gradle, Ant & mehr 4
S Java 32 Bit and 64 Bit Switcher for Windows XX [64 Bit only] Tools - Maven, Gradle, Ant & mehr 0
F java.lang.ClassNotFoundException auf anderem Rechner Tools - Maven, Gradle, Ant & mehr 0
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
T Java Applikation an Clients verteilen Tools - Maven, Gradle, Ant & mehr 5
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
J Applet Java fragt Verzeichnis ab Tools - Maven, Gradle, Ant & mehr 0
J Applet .java.policy und neue Javaversion Tools - Maven, Gradle, Ant & mehr 4
R Maven woher gewusst, dass mein Java-Code commons-lang braucht? Tools - Maven, Gradle, Ant & mehr 0
O Applet Selbstsignierte Applets in Java 7 Update 51 Tools - Maven, Gradle, Ant & mehr 19
M Was muss man installiert haben damit Java Applets im Browser gehen Tools - Maven, Gradle, Ant & mehr 2
T ClassNotFound erfordert ständiges Löschen des Java-Cache. Tools - Maven, Gradle, Ant & mehr 2
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
B Webstart Java Webstart hängt sich beim Laden auf! Tools - Maven, Gradle, Ant & mehr 8
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
ChrisX Java im Autostart sinnvoll? Tools - Maven, Gradle, Ant & mehr 4
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
F [Java Webstart] Webspace gesucht... Tools - Maven, Gradle, Ant & mehr 6
M Java Application startet bei verschiedenen JRE's nicht Tools - Maven, Gradle, Ant & mehr 7
B Wie kann man unter Windows 7 file types mit Java Applikationen verknüpfen? Tools - Maven, Gradle, Ant & mehr 5
D Java mit .bat starten Tools - Maven, Gradle, Ant & mehr 1
S Java Applikation als Windows Service einrichten Tools - Maven, Gradle, Ant & mehr 23
C Aufruf eines Java Programms mittels ant MIT Parametern Tools - Maven, Gradle, Ant & mehr 2
P Java Applikation auf Server Tools - Maven, Gradle, Ant & mehr 7
schlingel Applet Java-Sicherheitswarnung wegen alter JRE-Version Tools - Maven, Gradle, Ant & mehr 13
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
W CVS Keine Verbindung zu cvs.dev.java.net möglich Tools - Maven, Gradle, Ant & mehr 5
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
J Webstart Grenzen von Java Webstart? Tools - Maven, Gradle, Ant & mehr 2
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
T Ant ant-variable aus Java Tools - Maven, Gradle, Ant & mehr 4
F Ant ANT javac class-Dateien von entfernten JAVA-Klassen löschen Tools - Maven, Gradle, Ant & mehr 11
J Java Webstart beschleunigen und Verlauf anzeigen Tools - Maven, Gradle, Ant & mehr 3
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
S Probleme mit Kombination Java JApplet;MySQL;Webserver Tools - Maven, Gradle, Ant & mehr 3
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
I In Java Applets drucken Tools - Maven, Gradle, Ant & mehr 2
D Java Webstart startet .jar file nicht Tools - Maven, Gradle, Ant & mehr 13
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
U Java Webstartproblem ab Version 1.6_11 Tools - Maven, Gradle, Ant & mehr 7
S Java Ant per Console starten Tools - Maven, Gradle, Ant & mehr 3
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben