2016-05-07 8 views
1

Ich denke, ich mache hier einen einfachen Fehler, aber ich kann Frege nicht dazu bringen, außerhalb des lokalen Eclipse-Projekts Klassen zu finden.Frege kann Klassen in referenziertem Projekt oder externem Jar nicht finden

Ich habe ein funktionierendes nicht-triviales Java-Projekt (das ist nicht meins), das ich nicht ändern möchte. Ich möchte ein neues sauberes Frege-fähiges Projekt haben, das Klassen aus dem ursprünglichen Projekt verwendet.

Ich habe versucht, das ursprüngliche Projekt als eine Abhängigkeit von meinem Frege-Projekt zu markieren, und ich habe versucht, das ursprüngliche Projekt in eine JAR zu verpacken und die JAR als externe Abhängigkeit des Frege-Projekts aufzulisten. In beiden Fällen kann eine Java-Datei im Frege-Projekt auf die Klassen zugreifen, aber der Frege-Compiler sagt "class org.foo.bar.Class ist keine bekannte Java-Klasse". Dies scheint ein Fehler zu sein, aber ich bin nicht zuversichtlich, dass ich einen einfachen Konfigurationsschritt nicht verpasst habe.

Ich habe nicht versucht, Argumente in der Projektkonfiguration zu setzen, da ich nicht wissen würde, was ich einstellen soll.

Ich habe schnell entdeckt, dass ich eine neue Java-Datei im Frege-Projekt mit einer leeren Unterklasse der Klasse, die ich brauche, erstellen und in einer Frege-Datei verwenden kann. Ich habe erfolgreich ein einfaches Programm wie dieses kompiliert und ausgeführt. Das Programm erstellt nur ein neues Objekt, bekommt ein Feld und druckt den richtigen Wert aus, also glaube ich, dass mein Frege korrekt installiert ist und funktioniert.

Weitere Informationen:

  • Eclipse-Luna 4.4.0
  • Java 7
  • No Maven
  • Offizielle Eclipse-Plugin ferge durch Eclipse-Installation
+1

Ist es ein Maven-basiertes Projekt? Hat Ihr Setup die richtigen Java-Versionen? https://github.com/Frege/freege/wiki/Getting-Started. Hast du https://github.com/Frege/eclipse-plugin benutzt? –

+0

kein Maven. ja Eclipse-Plugin. Ich habe festgelegt, Java 7 zu verwenden, und ich bin sicher, dass die Java-Klassen keine neueren Java-Funktionen verwenden. Diese Klassen sind einfach, aber es gibt viele. –

+1

Ich kann 2 Verdächtigen raten, einer ist zum Elternprojekt hat Abhängigkeit in ferge Projekt mit Schmiede .jar wie dieses https://github.com/Frege/freege/wiki/Frequently-Asked-Questions#can-i-make- a-stand-alone-frege-application-jar und das nicht mit dem übergeordneten jar erstellt wird. Oder fügen Sie Ihrem aktuellen Projekt möglicherweise keine Abhängigkeit hinzu? ein anderer ist eclipse könnte verwirrt werden, wie sagt in https://github.com/Frege/freege/wiki/Frequently-Asked-Questions#can-i-hack-the-compilerlibrary-in-eclipse –

Antwort

2

Es sollte genug sein, Lassen Sie Ihre Bibliothek im Build-Pfad und unter "referenzierte Bibliotheken" aufgeführt. Ihr neuer Kommentar weist darauf hin, dass der Compiler tatsächlich die fragliche Klasse findet.

Wenn Sie jedoch einen offenen Editor-Tab haben, werden geänderte Abhängigkeiten nicht beachtet. Insbesondere in den letzten Eclipse-Versionen habe ich beobachtet, dass gelöste Fehlermarker manchmal nicht korrekt bereinigt werden.

Schließen Sie die Editor-Registerkarte mit den angezeigten falschen Fehlern, und öffnen Sie sie erneut.

+0

Ok, das funktioniert, wenn ich das JAR verwende. Allerdings würde ich das Projekt lieber als Abhängigkeit bezeichnen, daher muss ich das JAR nicht neu erstellen, wenn ich anfange, einige Klassen zu optimieren. Wenn ich es auf diese Weise versuche, erhalte ich jetzt eine Fehlermeldung, dass der Frege-Builder in einer Datei im anderen Projekt in einer der Klassen fehlschlägt, die ich verwenden möchte. Das scheint ein Fortschritt zu sein, aber der Fehler ist nicht sehr hilfreich. Das andere Projekt ist sehr einfaches Java. –

+0

Es könnte auch das bin/Verzeichnis des anderen Projekts sein, denke ich. Auf diese Weise würde Ihr Frege-Projekt immer den letzten Zustand verbrauchen. – Ingo