diff --git a/plugins/org.python.pydev.debug/src/org/python/pydev/debug/ui/launching/PythonRunnerConfig.java b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/ui/launching/PythonRunnerConfig.java index 86f83ef..14cdc34 100644 --- a/plugins/org.python.pydev.debug/src/org/python/pydev/debug/ui/launching/PythonRunnerConfig.java +++ b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/ui/launching/PythonRunnerConfig.java @@ -688,6 +688,9 @@ throw new RuntimeException("The jython jar must be specified as the interpreter to run. Found: " + interpreter); } + if (interpreter.toOSString().endsWith("jython")) { + cmdArgs.add(interpreter.toOSString()); + } else { cmdArgs.add(javaLoc); //some nice things on the classpath config: http://mindprod.com/jgloss/classpath.html @@ -703,6 +706,7 @@ cpath = interpreter + SimpleRunner.getPythonPathSeparator() + pythonpathUsed; // } cmdArgs.add(cpath); + } cmdArgs.add("-Dpython.path=" + pythonpathUsed); //will be added to the env variables in the run (check if this works on all platforms...) addVmArgs(cmdArgs); @@ -714,8 +718,14 @@ //cmdArgs.add("-Dpython.security.respectJavaAccessibility=false"); cmdArgs.add("org.python.util.jython"); + if (!interpreter.toOSString().endsWith("jython")) { + cmdArgs.add("org.python.util.jython"); + } addDebugArgs(cmdArgs, "jython", actualRun, addWithDashMFlag, modName); } else { + if (!interpreter.toOSString().endsWith("jython")) { + cmdArgs.add("org.python.util.jython"); + } cmdArgs.add("org.python.util.jython"); } diff --git a/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java b/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java index 1b3d84c..6214e08 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java +++ b/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java @@ -74,19 +74,24 @@ public class SimpleJythonRunner extends SimpleRunner { String javaLoc = javaExecutable.getCanonicalPath(); String[] s; - //In Jython 2.5b0, if we don't set python.home, it won't be able to calculate the correct PYTHONPATH - //(see http://bugs.jython.org/issue1214 ) - - String pythonHome = new File(jythonJar).getParent().toString(); - - if (additionalPythonpath != null) { - jythonJar += SimpleRunner.getPythonPathSeparator(); - jythonJar += additionalPythonpath; - s = new String[] { javaLoc, "-Dpython.path=" + additionalPythonpath, "-Dpython.home=" + pythonHome, - "-classpath", jythonJar, "org.python.util.jython", script }; + if (new File(jythonJar).getName().equals("jython")) { + //The system jython can simply be invoked directly + s = new String[] { jythonJar, script }; } else { - s = new String[] { javaLoc, "-Dpython.home=" + pythonHome, "-classpath", jythonJar, - "org.python.util.jython", script }; + //In Jython 2.5b0, if we don't set python.home, it won't be able to calculate the correct PYTHONPATH + //(see http://bugs.jython.org/issue1214 ) + + String pythonHome = new File(jythonJar).getParent().toString(); + + if (additionalPythonpath != null) { + jythonJar += SimpleRunner.getPythonPathSeparator(); + jythonJar += additionalPythonpath; + s = new String[] { javaLoc, "-Dpython.path=" + additionalPythonpath, "-Dpython.home=" + pythonHome, + "-classpath", jythonJar, "org.python.util.jython", script }; + } else { + s = new String[] { javaLoc, "-Dpython.home=" + pythonHome, "-classpath", jythonJar, + "org.python.util.jython", script }; + } } if (args != null && args.length > 0) { @@ -158,6 +163,19 @@ public class SimpleJythonRunner extends SimpleRunner { cacheDir = "-Dpython.cachedir=" + cacheDir.trim(); } + if (new File(jythonJar).getName().equals("jython")) { + //The system jython can simply be invoked directly + List asList = new ArrayList(); + asList.add(jythonJar); + if (cacheDir != null) { + asList.add(cacheDir); + } + asList.add("-Dpython.path=" + jythonPath.toString()); + asList.addAll(Arrays.asList(script)); + asList.addAll(Arrays.asList(args)); + return asList.toArray(new String[0]); + } + String[] vmArgsList = ProcessUtils.parseArguments(vmArgs); String[] s = new String[] { "-Dpython.path=" + jythonPath.toString(), diff --git a/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java b/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java index 9bd8d88..48ea995 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java +++ b/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java @@ -1457,9 +1457,9 @@ public class InterpreterInfo implements IInterpreterInfo { */ public static boolean isJythonExecutable(String executable) { if (executable.endsWith("\"")) { - return executable.endsWith(".jar\""); + return executable.endsWith(".jar\"") || executable.endsWith("jython\""); } - return executable.endsWith(".jar"); + return executable.endsWith(".jar") || executable.endsWith("jython"); } /**