Jythonc: как использовать?

#java #jython

#java #jython

Вопрос:

Я новичок в jython. Вот моя неудачная попытка использовать javac для компиляции моего скрипта python в файл класса.

     rohit@rohit-laptop:~/backyard$ echo "print 'hi'" > test.py
    rohit@rohit-laptop:~/backyard$ jython test.py 
    hi
    rohit@rohit-laptop:~/backyard$ jythonc test.py 
    Warning: jythonc is unmaintained and will not be included in Jython-2.3.  See http://jython.org/Project/jythonc.html for alternatives to jythonc.  Add '-i' to your invocation of jythonc to turn off this warning
    processing test

    Required packages:

    Creating adapters:

    Creating .java files:
      test module

    Compiling .java to .class...
    Compiling with args: ['/usr/bin/javac', '-classpath', '/usr/share/java/jython.jar:/usr/share/java/servlet-api-2.4.jar:/usr/share/java/libreadline-java.jar:./jpywork::/usr/share/jython/Tools/jythonc:/usr/share/jython/Lib:/usr/lib/site-python:__classpath__', './jpywork/test.java']
    0  
    rohit@rohit-laptop:~/backyard$ 
    rohit@rohit-laptop:~/backyard$ cd jpywork/
    rohit@rohit-laptop:~/backyard/jpywork$ ls
    test.class  test.java  test$_PyInner.class
    rohit@rohit-laptop:~/backyard/jpywork$ java test 
    Exception in thread "main" java.lang.NoClassDefFoundError: org/python/core/PyObject
    Caused by: java.lang.ClassNotFoundException: org.python.core.PyObject
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    Could not find the main class: test. Program will exit.
    rohit@rohit-laptop:~/backyard/jpywork$
  

Пожалуйста, предложите правильный способ.

Комментарии:

1. Я бы рекомендовал, после прочтения веб-страниц jythonc, отказаться от jythonc (похоже, это то, что они рекомендуют)

2. Если у вас есть jythonc , то вы, должно быть, используете Jython 2.2. Мы находимся на версии 2.5.1, и Jython значительно улучшился за последние несколько выпусков.

3. да.. Я решил отказаться от этого.

Ответ №1:

Jython автоматически скомпилирует его в файл .class при первом выполнении, однако, если вы хотите его скомпилировать, вы можете использовать стандартную библиотеку, найти py_compile.py или compileall.py в папке библиотеки Jython.

Ответ №2:

 $ java test # is not the exact command to execute the class file 
  

для выполнения этого файла класса требуется jython.jar file, вы должны указать jython.jar путь во время выполнения.

 #java -cp /home/litindia/jython-2.0.1/jython.jar:. test
  

-cp обязательно, /home/litindia/jython-2.0.1/jython.jar это мой путь, где jython.jar присутствует в моей системе, ваш путь может отличаться. поэтому, пожалуйста, укажите соответствующий путь.

И после того, как путь :. является обязательным. Затем требуется указать имя файла.