我高中的计算机实验室,我在我的CS课程中工作,有可怕的过时版本的java / jdk和Netbeans IDE(我认为都是5.0)。
Netbeans创业公司经常需要频繁锁定,以至于它干扰了我按时交付工作的能力。出于这个原因,我使用gvim编辑.java文件,并使用Netbeans编译和运行它们。
因为它是windows,我没有能够只使用javac来运行文件的奢侈。实际上,无论出于何种原因,命令提示符都完全锁定在计算机上。
是否可以在不使用适当的IDE或命令行的情况下进行编译和打包工作?
答案 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程序
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);
}
}
}