有没有一种方法可以在不使用windows命令行或IDE的情况下使用JDK工具?



我高中的计算机实验室,我做CS课程的地方,有可怕的过时版本的java/jdk和Netbeans IDE(我相信都是5.0)。

Netbeans的启动时间很长,经常锁住,以至于影响了我按时提交工作的能力。出于这个原因,我使用gvim来编辑.java文件,并在Netbeans中编译和运行它们。

因为是windows,所以我不能只使用javac来运行文件。实际上,命令提示符在计算机上完全被锁定了。

是一种不使用适当的IDE或命令行来完成编译和打包工作的方法吗?

是的,您可以这样做,但这需要更多的工作。在Java 6中,有一个API允许您调用编译器来编译源代码。查看此链接获取更多信息

该解决方案假设您可以访问Java 6解决方案,考虑到已安装的NetBeans版本,我非常怀疑。

另一个解决方案当然是使用其他环境来编译或运行文件。在这个链接上有一个Java编辑器可以从USB闪存驱动器上运行这可能正是你想要的。它比NetBeans更小更快,我发现我的一些学生比其他任何编辑器都更频繁地使用它。确保您按照说明从闪存驱动器使其工作。此外,如果您在安装过程中没有选择正确的语言,它默认为德语,achtung!

我知道你不想要一个IDE,但是Dr.Java是一个超级精简的java IDE。说实话,它根本算不上一个IDE,更像是一个内置编译器的文本编辑器。没有预编译,没有代码完成,调试器除了在断点处停止之外没有做更多的事情。它主要用作java的教学工具,但它确实符合你所描述的!

您可以编写自己的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);
        }
    }
}

最新更新