0

我有一个用于图形用户界面的 Java 程序。这个 Java 程序运行一个已经编译好的 C 程序。我创建了一个 JAR 文件以使我的程序可执行。因此,我的 C 程序包含在 JAR 文件中。

我使用这些行:

String[] Tab_arg =new String[6];

Tab_arg[0]="./src/generalisation.exe"; 
Tab_arg[1]=fileM.getAbsolutePath(); 
Tab_arg[2]=fileG.getAbsolutePath(); 
Tab_arg[3]=fichGA_absolutePath; 
Tab_arg[4]=fichGO_absolutePath; 
Tab_arg[5]=fileR.getAbsolutePath();

  try 
 {
    Process p =Runtime.getRuntime().exec(Tab_arg);
     BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
     String inputLine;
     while ((inputLine = in.readLine()) != null) System.out.println(inputLine);
} 
catch (IOException e) 
{
    e.printStackTrace();
}

问题是 JAR 文件在 Ubuntu 上运行正常,但在 Windows 上运行不正常。

4

1 回答 1

1

当您为 Windows 编译它时,您可以将两个版本(Linux 和 Windows)添加到 JAR 文件中。在您的代码中,您可以添加这个

if(System.getProperty("os.name").startsWith("Windows"))
    Tab_arg[0]=".\src\generalisation.exe";
else
    Tab_arg[0]="./src/generalisation";

如果 Linux 版本没有扩展名,这应该可以解决问题。

于 2012-08-27T14:47:11.000 回答