Есть ли способ использовать инструменты JDK без использования командной строки Windows или IDE? - PullRequest
1 голос
/ 16 ноября 2011

Компьютерная лаборатория в моей средней школе, где я делаю свою работу для курса CS, имеет ужасно устаревшие версии java / jdk и IDE Netbeans (я полагаю, обе версии 5.0).

Запуск Netbeans занимаетвечность, с частыми заторможениями, до такой степени, что это мешает моей способности вовремя работать.По этой причине я использовал gvim для редактирования файлов .java, компиляции и запуска их с Netbeans.

Поскольку это окна, я не могу позволить себе роскошь просто использовать javac для запуска файлов.На самом деле командная строка полностью заблокирована на компьютерах по любой причине.

Можно ли выполнить компиляцию и упаковку без использования соответствующей IDE или командной строки?

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

Да, вы можете сделать это, но это требует немного больше работы. В Java 6 есть API, который позволяет вам вызывать компилятор для компиляции исходного кода. См. эту ссылку для получения дополнительной информации.

В этом решении предполагается, что у вас есть доступ к решению Java 6, что я очень сомневаюсь, учитывая версию установленного NetBeans.

Другое решение - это, конечно, использовать что-то еще в качестве среды для компиляции или запуска файлов. Там есть редактор Java, который запускается с флешки на по этой ссылке это может быть просто то, что вы ищете. Он меньше и быстрее, чем NetBeans, и я обнаружил, что некоторые из моих учеников используют его больше, чем любой другой редактор. Обязательно следуйте инструкциям, чтобы заставить его работать с флешки. Кроме того, если вы не выбрали правильный язык во время установки, по умолчанию используется немецкий язык, achtung!

1 голос
/ 16 ноября 2011

Я знаю, что вы не хотите IDE, но Dr.Java - это суперлегкая IDE для Java.Честно говоря, это всего лишь среда IDE, больше похожая на текстовый редактор со встроенным компилятором. Нет предварительной компиляции, нет завершения кода, и отладчик не делает ничего больше, чем останавливается на точках останова.Он используется в основном в качестве учебного пособия по Java, но он, безусловно, соответствует тому, что вы описываете!

0 голосов
/ 16 ноября 2011

Вы можете написать собственную программу на Java, которая

  1. Позволяет разработчику выбирать файл для компиляции и запуска.
  2. Извлекает системный компилятор и компилирует файл.
  3. Запускает скомпилированную программу на Java.

Эй, я только что написал ее для вас.Это было очень весело писать.Прошу прощения за отсутствие модульности, я просто взломал его за 15 минут.Конечно, вам придется скомпилировать и упаковать нижеприведенную Java-программу в файл .jar, который затем можно будет дважды щелкнуть по нему для запуска.

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;


public class Launcher {
    public static void main(String[] args) {
        try {
            // Let the programmer choose the Java file to be compiled and executed.
            JFileChooser chooser = new JFileChooser();
            int response = chooser.showOpenDialog(null);
            if (response == JFileChooser.APPROVE_OPTION) {
                File javaFile = chooser.getSelectedFile();

                // Compile the Java file.
                InputStream in = new FileInputStream(javaFile);
                OutputStream out = new ByteArrayOutputStream(16);
                OutputStream err = new ByteArrayOutputStream(2000);
                JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
                String[] compileArgs = { javaFile.getAbsolutePath() };
                int r = compiler.run(in, out, err, compileArgs);
                if (r != 0) {
                    JOptionPane.showMessageDialog(null, err.toString(), "CompileError", JOptionPane.ERROR_MESSAGE);
                }
                else {
                    // Since the file compiled successfully, run the compiled class.
                    String filename = javaFile.getName();
                    int dot = filename.lastIndexOf('.');
                    String className = filename.substring(0, dot);
                    String[] command = {
                            "javaw",
                            className,
                    };
                    ProcessBuilder pb = new ProcessBuilder(command);
                    pb.directory(javaFile.getParentFile());
                    pb.start();
                }
            }
        }
        catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.toString(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...