2009-01-27 6 views
20

Wie konfiguriere ich meinen Projektbuild-Pfad so, dass ein Satz von .jar-Dateien im selben Verzeichnis liegt, das automatisch im Build-Pfad enthalten ist? Bedeutet, dass das Hinzufügen einer neuen JAR-Datei zu diesem Verzeichnis (und das Aktualisieren des Projekts) den Buildpfad aktualisiert? Rem: Ich arbeite nicht in einer Webapp, sondern in einer eigenständigen Java-App. Ich weiß, dass es in einem dynamischen Webprojekt möglich ist, alle .jars, die sich in WEB-INF/lib befinden, in den Erstellungspfad aufzunehmen. Ist es möglich, eine Art des gleichen Include zu machen, aber in Standalone-App?Eclipse-Buildpfad, der automatisch alle JARs eines internen Verzeichnisses übernimmt

Ich bin mit Eclipse-3.4

Antwort

-2

Haben Sie versucht, einen Platzhalter in der Classpath verwenden? Also würde man so etwas wie zu verwenden:

javac MyApp.java -cp /some/path/to/libraries/*.jar 

Ich habe nicht verwendet Java für eine Weile so nicht sicher, ob die oben möglich ist, aber es ist das, was ich würde erwarten, dass die Syntax sein.

11

AFAIK, es gibt keinen normalen Weg, dies zu tun.

Wenn Sie wirklich wollen, gibt es einen kleinen Hack. Eclipse .classpath-Datei ist ein sehr einfaches XML. Sie können eine Skript- oder Ant-Aufgabe schreiben, die ein Verzeichnis durchsucht, das .classpath-XML aktualisiert und das Projekt aktualisiert.

+4

+1. Ich bin mir nicht sicher, warum du dafür runtergestimmt wurdest. Ich habe etwas ähnliches gemacht und es hat perfekt funktioniert. Um es noch einen Schritt weiter zu bringen, können Sie Ihr Skript als Builder hinzufügen, so dass es automatisch ausgelöst wird, wenn das Projekt bereinigt wird ... – gMale

1

Was bedeutet, dass eine neue .jar-Datei zu dieses Verzeichnis hinzugefügt (und Auffrischen des Projekt) aktualisiert die buildpath

Entschuldigung, Eklipse dies nicht unterstützen.

9

einen hausgemachten "ClassPath Containers" Verwendung löst das Problem aber braucht man eine Eclipse-Plugin zu bauen: http://www.ibm.com/developerworks/edu/os-dw-os-eclipse-classpath.html

+0

genau die richtige Antwort - Klassenpfadcontainer sind ziemlich einfach zu schreiben, aber Sie müssen ein Plugin für die Rest deines Teams zu verwenden –

2

Verwenden Maven2 und das Eclipse Maven2 Plugin verwenden.

+0

Oder Ivy mit dem IvyDE-Plugin. – gMale

0

Auf einer Windows-Maschine können Sie tun, was Uzhin mit einem einzigen Liner in der Befehlszeile sagte.

Angenommen, Sie haben in Eclipse eine Variable namens AXIS2_HOME eingerichtet, die auf c: \ javalibs \ axis2-1.4.1 verweist. In diesem Beispiel wird der Befehl "for" verwendet, um alle .jar-Dateien im c: \ zu durchlaufen. javalibs \ axis \ lib-Verzeichnis und schreibt die .classpath-Knoten eine Datei namens addto.classpath. (Hinweis: Die Karat Zeichen^entkommen die < und> auf der Kommandozeile, so dass sie nicht tun, was sie in der Regel tun.)

for %i in (c:\javalibs\axis2-1.4.1\lib\*.jar) do @echo  ^<classpathentry kind="var" path="AXIS2_HOME/lib/%~ni%~xi"/^> >> addto.classpath 

Sie am Ende mit so etwas wie diesem in der Datei ...

<classpathentry kind="var" path="AXIS2_HOME/lib/activation-1.1.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/annogen-0.1.0.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-api-1.2.7.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-dom-1.2.7.jar"/> 
... 

Also dann können Sie diese Zeilen kopieren und an der offensichtlichen Stelle in der tatsächlichen .classpath-Datei einfügen.

0

Ich verwende eine Problemumgehung, die ich nach dem Lesen similar question entwickelt habe. Ich poste es hier, weil diese Frage einen etwas anderen Bereich hat und es nicht offensichtlich ist, wie man dort geschriebene Vorschläge verwendet.

  1. Erstellen Sie neues dynamisches Web-Projekt (Standardeinstellung ist ok, so dass es schnell ist)
  2. löscht Verzeichnis "lib" unter WebContent/WEB-INF/
  3. die Ordner neu, aber es als Link zu dem erstellen Verzeichnis in Ihrem Hauptprojekt, wo Ihre Gläser werden
  4. überprüfen Web App Bibliotheken Option auf Bestellung und Registerkarte Export in Java Build Path Einstellungen Ihres Projekts
  5. dieses neu erstellte Projekt befindet sich hinzufügen als Abhängigkeit zu Ihrem Hauptprojekt

Es ist ärgerlich, dies für jedes lib-Verzeichnis in Ihrem Projekt zu tun, aber es ist besser, als jedes Mal, wenn Sie svn update (von Ihren glücklicheren Kollegen, die Idea verwenden), manuell jars hinzuzufügen. Es ist eine Schande, dass Eclipse diese Funktion nicht hat. im Arbeitsbereich

5

Mein Kollege einen Classpath Container implementiert, die rekursiv für Gläser in einem bestimmten Verzeichnis aussieht kann, hat einen Blick auf http://openscada.org/2010/05/31/adding-a-directory-as-class-path-to-eclipse/

Die Update-Site auf http://repo.openscada.org/p2/bob/R

Das Plugin ist lizenziert unter LGPL finden V3 und Sie finden den Quellcode unter https://github.com/ctron/org.openscada.bob

+0

Die tote Verbindung zum Artikel wurde behoben. Genau das habe ich gesucht! –

+0

danke, ich habe auch den svn link behoben, wir sind vor einiger zeit nach git umgezogen – Mauli

0

Sie können eine Benutzerbibliothek in Eclipse verwenden kann eine sinnvolle Möglichkeit, eine Reihe von JAR-Dateien zu organisieren. Wenn Sie über mehrere JAR-Dateien verfügen, die Sie in mehreren Projekten verwenden, können Sie eine Benutzerbibliothek erstellen, um auf die JAR-Dateien zu verweisen. Daher müssen Sie nur die Benutzerbibliothek und nicht alle einzelnen JAR-Dateien in den Buildpfad Ihres Projekts aufnehmen.

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/User Library name"/> 

http://www.avajava.com/tutorials/lessons/what-is-a-user-library-and-how-do-i-use-it.html;jsessionid=ACD75E0A035BDC3AC656B481A7830FB6

+1

Das einzige Problem dabei ist, dass der Pfad zu JAR-Dateien in der Benutzerbibliothek absolut sein muss. Dies führt zu Problemen in einer Teamumgebung (Versionskontrolle), in der Personen unterschiedliche absolute Pfade zu ihrem Arbeitsbereich haben. Um dies zu beheben, können Sie eine CLASSPATH VARIABLE erstellen, aber dann muss jeder die Variable erstellen und die Dinge werden schnell unübersichtlich. – gMale

0

Ich baute ein Werkzeug, das die .classpath (und .project) erzeugt, aber es erfordert, dass Sie die Liste der Gläser in Ihrem Ant-Build zu spezifizieren. Es könnte wahrscheinlich erweitert werden, um eine Liste von JAR-Dateien zu lesen.

http://sweetened.googlecode.com/

Verwandte Themen