eclipse: Dateien im Workspace

Vatar

Erfahrenes Mitglied
Leider habe ich schon wieder ein Problem.

Ich möchte auf Dateien im Workspace zugreifen (eigenltich geht es mir nur darum eine .lock unter .metadata anzulegen um eine zweite Instanz der Anwendung zu verhindern). Allerdings kann ich keine Tutorials o.ä. finden die mir erklären wie das geht.

Ich vermute mal dass ein simples new File("./workspace/.metadata/.lock") nicht funktioniert, da ja jedes Plugin schon mal seinen eigenen ClassLoader benutzt. Außerdem muss ich in meinem Fall schon sehr früh auf die Datei zugreigen, und zwar in der Application Klasse des RCP Plugins.

Kennt ihr Tutorials wo das erklärt wird?
Danke
 
Hallo,

setz einfach in die start/stop Methode deines Haupt-Bundles :

Java:
    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
     */
    public void start(BundleContext context) throws Exception {
        if (!Platform.getUserLocation().lock()) {
            Platform
                    .getLog(context.getBundle())
                    .log(
                            new Status(IStatus.WARNING, PLUGIN_ID,
                                    "Application lock already exists - may be the application is already running"));
            System.exit(-1);
        }
        Platform.getLog(context.getBundle()).log(
                new Status(IStatus.INFO, PLUGIN_ID,
                        "Aquired lock for location: "
                                + Platform.getInstanceLocation().getURL()));

        super.start(context);
        plugin = this;
    }


Java:
/*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
     */
    public void stop(BundleContext context) throws Exception {
        plugin = null;
        super.stop(context);
        System.out.println("xxx");
        Platform.getInstanceLocation().release();
        Platform.getLog(context.getBundle()).log(
                new Status(IStatus.INFO, PLUGIN_ID,
                        "Released lock for location: "
                                + Platform.getInstanceLocation().getURL()));
    }

Gruß Tom
 
Danke.

Jetzt kann ich zwar meine Anwendung nicht mehr von Eclipse aus starten da diese den lock schon belegt aber es reicht ja aus wenn ich den Code vor dem export wieder reaktiviere.
 
Zurück