2016-09-30 1 views
-1

Ich habe das folgende Programm, das eine Methode zu sich selbst hinzufügt, wenn es ausgeführt wird. Aber ich muss es jedes Mal mit der F5-Taste oder der Aktualisierungsoption aktualisieren. Gibt es eine Möglichkeit, die Aktualisierung im Programm selbst zu kodieren, so dass es sich nach der Änderung aktualisiert? Das Projekt, an dem ich gerade arbeite, ist eine Java-Anwendung und kein Eclipse-Plugin. Soweit ich weiß, kann die refreshLocal() -Methode nicht verwendet werden.Programmgesteuertes Aktualisieren einer Datei in einer Eclipse-Java-Anwendung

public class Demo { 
public static void main(String[] args) throws IOException, CoreException { 
    File file = new File("/home/kishan/workspace/Roast/src/Demo.java"); 

    if (file.exists()) { 
     JavaClassSource javaClass = Roaster.parse(JavaClassSource.class, 
       file); 
     javaClass.addMethod().setPublic().setStatic(true) 
       .setName("newMethod").setReturnTypeVoid() 
       .setBody("System.out.println(\"newMethod created\");") 
       .addParameter("String[]", "stringArray"); 
     FileWriter writer = new FileWriter(file); 
     writer.write(javaClass.toString()); 
     writer.flush(); 
     writer.close(); 

    } 

} 
} 

Ich habe versucht, die refreshLocal() -Methode in der Eclipse JDT definiert, aber da mein Projekt ist eine Java-Anwendung der ResourcePlugin.getWorkspace() -Methode nicht geben funktioniert mir einen „Arbeitsbereich geschlossen“ Fehler.
Jeder Vorschlag wird geschätzt.

+2

Die .java-Datei, die Sie bearbeiten, ist nicht die .class-Datei, zu der sie kompiliert und ausgeführt wird. – ChiefTwoPencils

+0

@ChiefTwoPencils Was versuchen Sie zu implizieren? –

+0

@ChiefTwoPencils Vielleicht möchte er in Eclipse auf "run" klicken; und möchte dann die hinzugefügte Methode in Eclipse sehen ... ohne F5 erneut zu drücken. Mit anderen Worten: Die Ausführung der Klasse sollte dazu führen, dass Eclipse seine Quellsichten aktualisiert. – GhostCat

Antwort

0

Sie sehen, Eclipse führt Ihre Java-Klasse innerhalb ihrer eigenen dedizierten JVM. Daher gibt es keine direkte programmatische Möglichkeit, eine Aktualisierung in Eclipse zu erzwingen.

Sie könnten diese ältere question überprüfen; vielleicht könnte das zu einem vernünftigen Workaround führen.

Auf der anderen Seite könnten Sie zurücktreten und sich fragen, warum genau Sie das erreichen wollen. Ihr Workflow macht einfach keinen Sinn, wenn Sie ihn betrachten. Wie in: Wenn Code auf diese Weise generiert wird, sollte der generierte Code nicht besser an seinem eigenen Ort sein?

Wenn Sie beabsichtigen, häufig Code "zu generieren", dann verwenden Sie es weiterhin in Eclipse; gut, dass irgendwie riecht wie eine seltsame Idee.

+0

Ich versuche, die automatische Generierung von equals() und hashCode() -Option von Eclipse nachzuahmen. –

+0

Auch habe ich bereits die Antwort gelesen, auf die Sie mich verwiesen, aber es enthält keinen Code, um die Datei zu aktualisieren. Es gibt einige relevante Fragen, aber sie funktionieren nicht ganz für mich: http://stackoverflow.com/questions/5467902/how-to-refresh-eclipse-workspace-programatically http://stackoverflow.com/questions/11569910/ how-to-call-eclipse-f5-refresh-programmatisch-nach-Seite-schließt –

Verwandte Themen