我高中的计算机实验室,我做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程序
- 允许开发者选择一个文件来编译和运行。
- 检索系统编译器并编译文件。
- 启动编译后的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);
}
}
}