Как скомпилировать .java файл в Java?

Мне генерировал следующий код Eclipse (.java файл).

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Display;

public class HelloWorldSWT {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Hello world!");
        shell.open();
        while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
        }
        display.dispose();
    }

}

Теперь я хочу скомпилировать вышеупомянутый файл из командной строки. Я перешел к каталогу, где исходный код расположен, и я попробовал две команды:
1. javac HelloWorldSWT.java
2. javac-d/home/myname/workspace/HelloWorldSWT.java

В обоих случаях у меня есть та же ошибка "Импорт org.eclipse, не может быть разрешен"./home/myname/workspace/-является каталогом, где файл класса расположен.

Насколько я понимаю, что компилятор не видит org.eclipse.swt пакета. Почему?

Это может быть, потому что проблематичный пакет расположен в "/home/myname/workspace/org.eclipse.swt /" (не в "/home/myname/workspace/org/eclipse/swt /")?

6
задан RAS 4 July 2013 в 08:05
поделиться

7 ответов

Вам необходимо указать путь к классам , чтобы компилятор Java знал, где найти классы org.eclipse. *. Вы можете сделать это с помощью переключателя командной строки или переменной среды.

5
ответ дан 10 December 2019 в 00:37
поделиться

Поскольку вы занимаетесь разработкой Eclipse RCP, вы также должны позволить Eclipse обрабатывать вашу компиляцию. (Скорее всего, вы найдете свои классы в каталоге «build» или «bin» в проекте). Помимо компиляции, будут выполняться некоторые шаги по «упаковке» для создания окончательного приложения, а в Eclipse есть инструменты для этого тоже.

Если вы действительно хотите строить вне Eclipse, вам необходимо управлять потенциально большим списком зависимостей (например, org.eclipse.swt.widgets), что делает невозможным использование чистого javac. Вам нужно будет посмотреть на Ant или Maven.

Также обратите внимание, что вам понадобится путь к классам, чтобы включать зависимости не только для компиляции, но и при запуске программы.

2
ответ дан 10 December 2019 в 00:37
поделиться

Хорошо, Stephen C Я проделал эту работу вручную. Я использовал только Notepad ++ (обещаю)

  1. Запустите Notepad ++ и создайте файл HelloWorldSWT.java
  2. Скопируйте пример от автора
  3. Сохраните!
  4. Откройте cmd и перейдите в каталог с HelloWorldSWT.java
  5. Выполните команду javac HelloWorldSWT.java

  6. Хорошо, перейдите в каталог Eclipse и найдите правильный jar swt-3.4.2 -win32-win32-x86.jar

  7. Запустить еще раз

    D: \ workspaces \ spf_workspace \ hand-made> javac -cp "D: \ Program files \ eclipse3_5 \ plugins \ org.eclipse.swt.win32. win32.x86_3.5.1.v3555a.jar "HelloWorldSWT.java

Весь процесс занимает 2 минуты.

Не пытайтесь запустить это:

`D:\workspaces\spf_workspace\hand-made>java -cp "D:\Program files\eclipse3_5\plugins\org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar;." HelloWorldSWT`

Примечание: я добавляю текущий каталог. к пути к классам тоже.

5
ответ дан 10 December 2019 в 00:37
поделиться

Но мне кажется, что я указываю "путь к классам" во время компиляции (используя параметр -d). Я подумал, что после опции "-d" я помещаю имя каталога , в котором находятся все мои пакеты . Я неправильно понимаю?

попробуйте

javac -help

, чтобы увидеть, что делают различные параметры командной строки. также обратите внимание на другой пост выше, который объясняет это.

компиляция из командной строки и установка пути к классам и все в порядке - это боль. однако полезно сделать это, чтобы вы понимали, что на самом деле делает ide, когда автоматизирует это за вас.

0
ответ дан 10 December 2019 в 00:37
поделиться

Переменная classpath или переключатель командной строки должны указывать на место расположения org.eclipse.swt.widgets.Shell класса, если этот класс находится внутри jar-файла, то classpath должен содержать фактический jar-файл,

т.е. javac -classpath /root/to/jar/eclipse.jar

Иначе, если org.eclipse.swt.widgets. Shell - это просто свободный файл класса (в чем я сомневаюсь, я предполагаю, что он будет находиться внутри одного из jar-файлов eclipse, которые вы можете найти с помощью jar -tvf jar-you-think-it-might-be-in.jar)... тогда вам понадобится javac -classpath, чтобы указать на расположение каталога верхнего уровня в org/eclipse/swt/widgets/ пути.

0
ответ дан 10 December 2019 в 00:37
поделиться

@Roman - эта проблема слишком сложна для новичка, чтобы пытаться ее решить. Проблема в том, что SWT имеет сложные зависимости, включая зависимости от библиотек нативного кода.

Лучше всего запускать SWT-приложение с помощью Eclipse "RunAs" ... или попытаться найти документацию по запуску SWT-приложений из командной строки, специфичную для Eclipse.

0
ответ дан 10 December 2019 в 00:37
поделиться

Вы забыли о classpath

-2
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: