有没有办法在不使用Windows命令行或IDE的情况下使用JDK工具?

时间:2011-11-16 05:08:45

标签: windows java command-prompt

我高中的计算机实验室,我在我的CS课程中工作,有可怕的过时版本的java / jdk和Netbeans IDE(我认为都是5.0)。

Netbeans创业公司经常需要频繁锁定,以至于它干扰了我按时交付工作的能力。出于这个原因,我使用gvim编辑.java文件,并使用Netbeans编译和运行它们。

因为它是windows,我没有能够只使用javac来运行文件的奢侈。实际上,无论出于何种原因,命令提示符都完全锁定在计算机上。

是否可以在不使用适当的IDE或命令行的情况下进行编译和打包工作?

3 个答案:

答案 0 :(得分:2)

是的,你可以这样做,但它需要更多的工作。在Java 6中,有一个API允许您调用编译器来编译源代码。有关详细信息,请参阅this link

该解决方案假设您可以以某种方式访问​​Java 6解决方案,我非常怀疑安装了NetBeans的版本。

另一种解决方案当然是使用其他东西作为编译或运行文件的环境。有一个Java编辑器,可以在this link的USB闪存驱动器上运行 这可能就是你想要的。它比NetBeans更小更快,我发现我的一些学生使用它比任何其他编辑器更多。请确保按照说明从闪存驱动器开始工作。此外,如果您在安装期间未选择正确的语言,则默认为德语,achtung!

答案 1 :(得分:1)

我知道你不需要IDE,但Dr.Java是java的超级IDE。说实话,它几乎不是一个IDE,更像是一个内置编译器的文本编辑器。没有预编译,没有代码完成,调试器没有做多于停止断点的工作。它主要用作java的教学工具,但它肯定适合你所描述的内容!

答案 2 :(得分:0)

您可以编写自己的Java程序

  1. 允许开发人员选择要编译和运行的文件。
  2. 检索系统编译器并编译文件。
  3. 启动已编译的Java程序。
  4. 嘿,我刚刚为你写的。写这个很有趣。请原谅缺乏模块化,我只是在15分钟内将其破解。当然,您必须在.jar文件中编译和打包以下Java程序,然后您可以双击它来运行它。

    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);
            }
        }
    }