65.9K
CodeProject 正在变化。 阅读更多。
Home

Java Learner IDE

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.34/5 (10投票s)

2007年11月7日

CPOL

2分钟阅读

viewsIcon

38678

downloadIcon

758

一个单窗口 Java Learner IDE,使用 C#。

Screenshot - jli.jpg

引言

我当时正在为一个C++ DOS应用程序制作一个处理器。这启发了我制作这个工具。这个工具不是一个专业的工具,但展示了一个使用System.Diagnostics命名空间的例子。使用这个工具,你可以编写小的基于控制台的Java程序,编译并运行。这只是一个实际学习Java的方法。

必备组件

是的,要学习 Java - 你必须首先安装 Java SDK,然后你需要将你的 javac.exejava.exe 的路径添加到你的 path 环境变量中,如果你还没有这样做的话。这个应用程序会检查它是否正常。如果出现问题,它会给你消息:“Java 没有安装或未在 PATH 变量中找到”。 同时,编译、运行和编译 & 运行按钮将被禁用。

工作流

当你调用应用程序时,Java 检查将在 Form1_Load 事件中发生。我使用的方法是 CheckIfJavaInstalled()。 没有系统级别的任务在执行来检查 Java 是否已安装。 它只是简单地检查 path 环境变量是否包含单词 'java'。

private bool CheckIfJavaInstalled()
{
    bool flag = true;
    if (Environment.GetEnvironmentVariable("path").ToLower().IndexOf("java") == -1)
    {
        flag = false;
    }
    return flag;
}

在主窗口(好吧,只有一个窗口;)),我使用了一个分割容器,两个文本框,一个面板和三个按钮。两个文本框都启用了多行。一个用于编写 Java 代码,另一个用于显示状态消息和程序输出。

'编译' 按钮将首先把当前显示的代码保存到名为 test.java 的文件中 (函数: SaveFile())。 这是因为 javac.exe 需要一个 Java 程序文件来编译。 保存后,它调用函数 CompileJava()。 这又调用了一个函数 Execute(@"javac.exe", "test.java")。 我将此写成一个单独的方法,因为我想对 Runjava() 方法也使用相同的方法。

这是代码的样子

private bool Execute(string filename, string arguments)
{
    bool flag = true;
    Process p = new Process();
    p.StartInfo.FileName = filename;
    p.StartInfo.Arguments = arguments;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.ErrorDialog = false;
    p.StartInfo.CreateNoWindow = true;
    p.Start();
    p.WaitForExit();
            
    string err = p.StandardError.ReadToEnd();
    string output =  p.StandardOutput.ReadToEnd();
    string str = err + output;
    if (output.Length == 0)
    {
        if (err.Length > 0)
        {
            str += "Status: Failed";
            flag = false;
        }
        else
        {
            str += "Status: Success";
        }
    }


    txtOutput.SelectionLength = txtOutput.Text.Length;
    txtOutput.SelectedText = str + "\r\n--------------------------------------\r\n";

    return flag;
}

如果你是初学者,你可能想知道 SelectectionLengthSelectedText 是什么意思。这两行代码用于移动状态文本框的光标以滚动到底部。

System.Diagnostics.Process 用于调用命令行应用程序 javac.exejava.exe,并将输出从控制台重定向到我们应用程序的状态文本框。

问题?

正如我之前提到的 - 这不是一个专业的软件,而是一个业余爱好程序。而且,我写得太快了,可能只用了 30 分钟或更少的时间。 因此,没有异常处理,设计,文档/帮助等。

历史

  • 2007 年 11 月 7 日:初始发布
© . All rights reserved.