Bugs bei Packages #322
Labels
No Label
Codegen
confirmed
duplicate
Eclipse-Plugin
Feature Request
generics
in progress
invalid
JavaCompilerCore
needs info
Parser
Trash
Type
Unify
won't fix
works for me
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: JavaTX/JavaCompilerCore#322
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beim der Implementierung scheint es noch kleine Bugs (bzw. Fälle die nicht berücksichtigt wurden) zu geben.
Gegeben ist folgende Pakethierarchie, wobei src das root dir der Pakethierarchie ist:
In der Klasse Bar wird ein Objekt von Foo erstellt.
1
Hier handelt es sich eher um ein convenience Vorschlag. Bei javac wird automatisch das aktuelle working dir in den classpath aufgenommen. Beim Java-TX Compiler muss man diesen aktuell immer manuell angeben.
Folgendes funktioniert also nicht:
$ java -jar JavaTXcompiler-2.3-jar-with-dependencies.jar src/main/p1/Bar.jav
Man muss explizit das aktuelle Arbeitsverzeichnis angeben, damit Foo.jav von Bar.jav gefunden werden kann:
$ java -jar JavaTXcompiler-2.3-jar-with-dependencies.jar -cp "." src/main/p1/Bar.jav
2
Wenn man den Classpath nun manuell angegeben hat, findet der Compiler Foo.jav und compiliert die Klasse, um sie in Bar.jav verwenden zu können. Foo.class liegt nun also im korrekten Ordner.
Dann kommt es zum nächsten Problem. Der Compiler versucht Foo.class einzulesen, findet allerdings die Datei nicht. Ich denke hier ist einfach ein Bug im Code.
Exception in thread "main" java.lang.ClassNotFoundException: src.main.p1Foo
Damit man beide Klassen ohne Fehler compilieren kann, muss man für die Classfiles eine extra output dir angeben, sodass die Classfiles nicht neben die Sourcefiles gelegt werden.
Folgendes funktioniert also:
$ java -jar JavaTXcompiler-2.3-jar-with-dependencies.jar -d "out" -cp "." src/main/p1/Bar.jav
Das bedeutet aber, dass man aktuell die Classfiles und Sourcefiles nicht nebeneinander liegen haben kann, da es dann wie gesagt wohl zu Problemen mit dem Einlesen des Classfiles gibt.
Ich bin mir nicht ganz sicher wie javac sich verhält. Vielleicht kannst du mal die Regeln in ein neues Issue stellen falls es noch nicht klappt.