Externe Jar in Java-TX einbinden #335

Closed
opened 2024-05-15 21:23:08 +00:00 by i21023 · 3 comments
Collaborator

Ich habe aktuell Probleme damit, eine externe Jar als Abhängigkeit zu verwenden. Bisher bin ich wegen Bug #327 immer davon ausgegangen, dass das funktioniert. Offensichtlich hat er aber einfach immer die Bibliotheken aus dem Compiler in Java verwendet.

Für das Beispiel hab ich mir die Apache Commons Lang jar heruntergeladen.

import org.apache.commons.lang3.StringUtils;
import java.lang.String;


public class Main {
    public main() {
        String str = "Hello World";
        String reversed = StringUtils.reverse(str);
    }
}
.
├── commons-lang3-3.14.0.jar
├── dependencies
│   └── commons-lang3-3.14.0.jar
├── JavaTXCompiler.jar
└── Main.jav

Hier ist die Dateistruktur, die Jar Datei liegt im dependencies Ordner und direkt neben der Datei, da ich beides versucht habe.

Aber egal wie ich das Skript aufrufe, ich bekomme immer eine ClassNotFoundException oder dass der gegebene Pfad kein Ordner ist

Hier ein paar Versuche:
java -jar JavaTXCompiler.jar Main.jav
java -jar JavaTXCompiler.jar -cp "." Main.jav
java -jar JavaTXCompiler.jar -cp "$(pwd)" Main.jav
java -jar JavaTXCompiler.jar -cp ".:commons-lang3-3.14.0.jar" Main.jav

java -jar JavaTXCompiler.jar -cp "dependencies/*" Main.jav
java -jar JavaTXCompiler.jar -cp "dependencies/" Main.jav
java -jar JavaTXCompiler.jar -cp "dependencies" Main.jav

Also zusammenfassend schaffe ich es nicht eine jar in einer jav Datei zu verwenden.

Ich habe aktuell Probleme damit, eine externe Jar als Abhängigkeit zu verwenden. Bisher bin ich wegen Bug #327 immer davon ausgegangen, dass das funktioniert. Offensichtlich hat er aber einfach immer die Bibliotheken aus dem Compiler in Java verwendet. Für das Beispiel hab ich mir die `Apache Commons Lang jar` heruntergeladen. ```java import org.apache.commons.lang3.StringUtils; import java.lang.String; public class Main { public main() { String str = "Hello World"; String reversed = StringUtils.reverse(str); } } ``` ``` . ├── commons-lang3-3.14.0.jar ├── dependencies │ └── commons-lang3-3.14.0.jar ├── JavaTXCompiler.jar └── Main.jav ``` Hier ist die Dateistruktur, die Jar Datei liegt im dependencies Ordner und direkt neben der Datei, da ich beides versucht habe. Aber egal wie ich das Skript aufrufe, ich bekomme immer eine `ClassNotFoundException` oder dass der gegebene Pfad kein Ordner ist Hier ein paar Versuche: `java -jar JavaTXCompiler.jar Main.jav` `java -jar JavaTXCompiler.jar -cp "." Main.jav` `java -jar JavaTXCompiler.jar -cp "$(pwd)" Main.jav` `java -jar JavaTXCompiler.jar -cp ".:commons-lang3-3.14.0.jar" Main.jav` `java -jar JavaTXCompiler.jar -cp "dependencies/*" Main.jav` `java -jar JavaTXCompiler.jar -cp "dependencies/" Main.jav` `java -jar JavaTXCompiler.jar -cp "dependencies" Main.jav` Also zusammenfassend schaffe ich es nicht eine jar in einer jav Datei zu verwenden.
Author
Collaborator

Noch eine Anmerkung:
Wenn ich die jar entpacke und die Dateihierarchie neben die jav Datei lege, compiliert es. Er schaut also wohl nur nicht richtig in die jar rein

**Noch eine Anmerkung:** Wenn ich die jar entpacke und die Dateihierarchie neben die jav Datei lege, compiliert es. Er schaut also wohl nur nicht richtig in die jar rein
dholle was assigned by i21023 2024-05-15 21:27:00 +00:00
dholle referenced this issue from a commit 2024-05-22 10:55:50 +00:00
Owner

Keine Ahnung warum da ein Check dabei war für Ordner aber jetzt scheint es zu funktionieren.

Keine Ahnung warum da ein Check dabei war für Ordner aber jetzt scheint es zu funktionieren.
Author
Collaborator

Ich habe mal in 5b4ea5a0c5 noch den Support für glob Syntax implementiert. So kann man z.B. mit * alle JAR Archive in einem Ordner einbingen und muss nicht alle einzeln angeben

Ich habe mal in 5b4ea5a0c5 noch den Support für glob Syntax implementiert. So kann man z.B. mit * alle JAR Archive in einem Ordner einbingen und muss nicht alle einzeln angeben
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#335
No description provided.