diff --git a/de.prob.core/src/de/prob/cli/CliStarter.java b/de.prob.core/src/de/prob/cli/CliStarter.java index a1fd1bb431a6f0bf2b6a59cd0985662ee12d6a0b..fa142a5eb0fada6925fd9b14a5e38a689da1b8ff 100644 --- a/de.prob.core/src/de/prob/cli/CliStarter.java +++ b/de.prob.core/src/de/prob/cli/CliStarter.java @@ -41,8 +41,6 @@ public final class CliStarter { private static final String[] JARS = new String[] { "BParser.jar", "ParserAspects.jar", "aspectjrt.jar", "prolog.jar" }; - private static Map<String, OsSpecificInfo> OSINFOS = createOsInfos(); - private Process prologProcess; private String debuggingKey; @@ -56,17 +54,6 @@ public final class CliStarter { this(null); } - private static Map<String, OsSpecificInfo> createOsInfos() { - Map<String, OsSpecificInfo> infos = new HashMap<String, CliStarter.OsSpecificInfo>(); - infos.put(Platform.OS_MACOSX, new OsSpecificInfo("macos", "probcli.sh", - "sh", "send_user_interrupt")); - infos.put(Platform.OS_LINUX, new OsSpecificInfo("linux", "probcli.sh", - "sh", "send_user_interrupt")); - infos.put(Platform.OS_WIN32, new OsSpecificInfo("windows", - "probcli.exe", null, "send_user_interrupt.exe")); - return Collections.unmodifiableMap(infos); - } - public CliStarter(final File file) throws CliException { startProlog(file); } @@ -97,10 +84,13 @@ public final class CliStarter { debuggingKey = null; final String os = Platform.getOS(); + final String arch = Platform.getOSArch(); final File applicationPath = getCliPath(); final String fullcp = createFullClasspath(os, applicationPath); - final OsSpecificInfo osInfo = getOsInfo(os); + + final OsSpecificInfo osInfo = getOsInfo(os,arch); + final String osPath = applicationPath + File.separator + osInfo.subdir; final String executable = osPath + File.separator + osInfo.cliName; @@ -161,15 +151,28 @@ public final class CliStarter { } - private OsSpecificInfo getOsInfo(final String os) throws CliException { - final OsSpecificInfo osInfo = OSINFOS.get(os); - if (osInfo == null) { + private OsSpecificInfo getOsInfo(final String os, String architecture) throws CliException { + if (os.equals(Platform.OS_MACOSX)) { + return new OsSpecificInfo("macos", "probcli.sh", + "sh", "send_user_interrupt"); + } + if (os.equals(Platform.OS_WIN32)) { + return new OsSpecificInfo("windows", + "probcli.exe", null, "send_user_interrupt.exe"); + } + + if (os.equals(Platform.OS_LINUX)) { + String linux = "linux"; + if (architecture.equals(Platform.ARCH_X86_64)) { + linux = "linux64"; + } + return new OsSpecificInfo(linux, "probcli.sh", + "sh", "send_user_interrupt"); + } final CliException cliException = new CliException( "ProB does not support the plattform: " + os); cliException.notifyUserOnce(); throw cliException; - } - return osInfo; } @SuppressWarnings("unchecked") @@ -333,7 +336,8 @@ public final class CliStarter { public void sendUserInterruptReference() { if (userInterruptReference != null) { try { - final OsSpecificInfo osInfo = getOsInfo(Platform.getOS()); + final OsSpecificInfo osInfo = getOsInfo(Platform.getOS(), + Platform.getOSArch()); final String command = getCliPath() + File.separator + osInfo.subdir + File.separator + osInfo.userInterruptCmd;