Come già detto anche da andbin, la directory corrente in ambiente grafico dipende sempre e solo dal sistema operativo.
Su Windows è possibile che il sistema imposti automaticamente la directory di lavoro uguale alla directory in cui risiede il file che viene aperto. Ma questo non è necessariamente valido anche per Linux/Unix o altri sistemi.
Ad esempio, se sotto Windows crei un collegamento al tuo JAR, nella finestra delle proprietà del collegamento (tasto destro sul collegamento, proprietà) puoi specificare quale debba essere la directory corrente (casella "Da:").
Puoi creare il JAR di questa applicazione, ad esempio, e verificare quale sia la directory corrente quando lo esegui con un doppio clic:
codice:
import javax.swing.*;
public class DirectoryCorrente {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Directory corrente: " + System.getProperty("user.dir"), "Prova directory", JOptionPane.INFORMATION_MESSAGE);
}
}
Il class-path non c'entra nulla in questo caso: se ci fossero problemi di class-path avresti altre eccezioni (NoClassDefFoundError).
L'attributo Main-Class del MANIFEST indica quale deve essere la classe da avviare (quella con il main): va indicato il nome completo (fully qualified name) della classe (quindi completo di tutta l'indicazione del package).
Ciao.