Запуск файла.java с отдельного Mac.java

У меня проблемы с использованием Desktop.getDesktop(). Open(). Я пытаюсь запустить один файл Java из другого, используя этот код:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class OpenFile {
    public static void main(String[] args){
        String program = "HelloWorld.java";

        try {
            Desktop.getDesktop().open(new File(program));
        } catch(IOException e) {
            System.out.println(program + " if not on the desktop");
        }
    }
}

У меня есть файл HelloWorld.java на моем рабочем столе, но я получаю эту ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: The file: HelloWorld.java doesn't exist.
    at java.awt.Desktop.checkFileValidation(Desktop.java:210)
    at java.awt.Desktop.open(Desktop.java:270)
    at OpenFile.main(OpenFile.java:10)

Я на Mac, так что это может быть проблемой, но я не уверен. Буду признателен за любой совет!

1 ответ

Здесь я вижу две проблемы.

  1. Вы хотите "запустить" Java-программу, которая отличается от "открытия" Java-файла.
  2. Даже если вы пытаетесь "открыть" файл Java с помощью Desktop.getDesktop().openэто не значит что getDesktop().open указывает на папку "Рабочий стол", откуда вы можете открыть файл на рабочем столе вашего Mac.
  1. Чтобы выполнить вашу Java-программу, вам нужно сначала скомпилировать Java-программу, используя Java-компилятор. Тогда вы сможете "запустить" вашу программу.
Runtime.getRuntime().exec("javac /Users/username/Desktop/HelloWorld.java");
Runtime.getRuntime().exec("java -classpath /Users/username/Desktop HelloWorld");
  1. Desktop.getDesktop().open(File file) Метод просто открывает выбранный файл в приложении по умолчанию для этого типа файла. Например, на Mac текстовый файл будет открыт TextEdit.app,

Надеюсь это поможет!

Другие вопросы по тегам