私は 1 台の PC でプログラムを作成し、非常に注意深くテストしましたが、すべて正常に動作しました。しかし、別のコンピューターに .exe を持って行っても、そうではありません。
このプログラムが行うことは、Process.start(); を使用して Java プログラムを実行する cmd を起動することです。
これは結果です:
javac: 無効なフラグ: C:\Users\Lan 使用法: javac 使用可能なオプションのリストについては -help を使用してください
C:\Users\Lan Nguyen\Desktop\TestGrader\f1>
\TestGrader\f1; が表示されている場合。これは正しいフォルダです。移動したい場所です。したがって、コードは正常に動作します
しかし、 javac: invalid flag: C:\Users\Lan; を見ると、これは、私のコードが最初に作成された別のコンピューターです。
なぜこれが当てはまるのかわかりません。誰かがそれを修正するのを手伝ってくれませんか。ありがとうございました。ところで、これは Java とは関係ありません。後で Java を実行する cmd を実行するために c# を使用したいだけです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;
namespace Gui
{
public partial class GradingProgram : Form
{
private String[] studentName;
private int index = 0;
String projectName, cmd, compileJava, runJava, path, unzip;
public GradingProgram()
{
studentName = new String[50];
InitializeComponent();
cmd = "cmd";
unzip = "/K rar x ";
compileJava = "/K javac ";
button3.Enabled = false;
this.AutoSize = true;
}
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderChooser = new FolderBrowserDialog();
folderChooser.ShowDialog();
path = folderChooser.SelectedPath;
}
private void updateLabels()
{
textBox2.Clear();
for (int i = 0; i < index; i++)
{
textBox2.AppendText(studentName[i]);
textBox2.AppendText(Environment.NewLine);
}
}
private void button2_Click(object sender, EventArgs e)
{
String currentDirectory;
for (int i = 0; i < index; i++)
{
currentDirectory = @path + "\\" + studentName[i];
Directory.SetCurrentDirectory(currentDirectory);
foreach (String files in Directory.GetFiles(currentDirectory))
{
if (Path.GetExtension(files) == ".java")
{
Process.Start(cmd, compileJava + files).WaitForExit();
}
}
}
}
private void button3_Click(object sender, EventArgs e)
{
projectName = textBox1.Text;
runJava = "/K java " + projectName;
String currentDirectory;
for (int i = 0; i < index; i++)
{
currentDirectory = @path + "\\" + studentName[i];
Directory.SetCurrentDirectory(currentDirectory);
textBox3.ScrollBars = ScrollBars.Vertical;
foreach (String files in Directory.GetFiles(currentDirectory))
{
if (Path.GetExtension(files) == ".java")
textBox3.Text += File.ReadAllText(files);
textBox3.AppendText("------------------------------------------------------------");
}
Process.Start(cmd, runJava).WaitForExit();
try
{
textBox4.Text = File.ReadAllText(Directory.GetCurrentDirectory() + "\\" + "output.txt");
}
catch (Exception )
{
textBox4.Text = "no output";
}
}
}
private void button4_Click(object sender, EventArgs e)
{
Directory.SetCurrentDirectory(@path);
foreach (String files in Directory.GetFiles(path))
{
if (Path.GetExtension(files) == ".rar")
{
Process.Start(cmd, unzip + files).WaitForExit();
}
}
foreach (String folder in Directory.GetDirectories(path))
{
studentName[index] = new DirectoryInfo(folder).Name;
index++;
}
button4.Enabled = false;
}
private void button5_Click(object sender, EventArgs e)
{
updateLabels();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.Text != "")
{
button3.Enabled = true;
}
}
}
}