package org.python.util; import java.io.*; import java.util.*; import java.util.jar.*; import org.python.core.*; public class RunJar { public static void main(String[] args) throws Exception { for (int i = 0; i < args.length; i++) { System.out.print(args[i] + " "); } System.out.println(); Properties p = System.getProperties(); for (Enumeration e = p.keys(); e.hasMoreElements(); ) { String key = (String) e.nextElement(); //System.out.println(key + " = " + p.getProperty(key)); } InputStream is = RunJar.class.getResourceAsStream( // "/META-INF/MANIFEST.MF"); "/jython.mf"); if (is == null) { System.err.println("No MANIFEST found"); System.exit(1); } Manifest manifest = new Manifest(is); System.out.println(manifest.getEntries().keySet()); Attributes main = manifest.getAttributes("python.main"); if (main == null) { System.err.println("No python.main section in manifest"); System.exit(1); } String script = main.getValue("Main-Script"); if (script == null) { System.err.println("No Main-Script property in manifest"); System.exit(1); } Attributes options = manifest.getAttributes("python.options"); Properties props = new Properties(); if (options != null) { for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { String key = i.next().toString(); props.put(key.replace('-', '.'), options.getValue(key)); } } PythonInterpreter.initialize(props, System.getProperties(), args); PythonInterpreter interp = new PythonInterpreter(); PyModule mod = imp.addModule("__main__"); interp.setLocals(mod.__dict__); is = RunJar.class.getResourceAsStream("/" + script); if (is == null) { System.err.println("No Main-Script in resources"); System.exit(1); } interp.execfile(is, script); } }