Jython 2.7 бета 1 под MSYS

Я установил jython 2.7 beta 1 в Windows и скопировал его сценарий оболочки JYTHON_HOME/bin/jython в $PATH видимое место для MSYS, но вызов

$ jython

не работает, с этой ошибкой:

java.lang.NoClassDefFoundError: org/python/util/jython
Caused by: java.lang.ClassNotFoundException: org.python.util.jython
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: org.python.util.jython.  Program will exit.
Exception in thread "main" 

Взглянув на этот сценарий оболочки jython (который я переименовал в jython.sh), я вижу, что он ожидает либо Cygwin, либо Darwin.

В начале файла я добавил

export JAVA_HOME='/c/Programs/JavaRE/6u31'
export JYTHON_HOME='/c/Programs/jython2_7b1'

А потом, где он сказал

case "`uname`" in
  CYGWIN*) cygwin=true;;
  Darwin) darwin=true;;
esac

я заменил на

case "`uname`" in
  CYGWIN*) cygwin=true;;
  MINGW*) cygwin=true;;
  Darwin) darwin=true;;
esac

Но это все еще не работает, с:

$ jython.sh test.j.py
/c/Programs/Path/jython.sh: line 265: /cygdrive/c/Programs/JavaRE/6u31/bin/java: No such file or directory

Внутри скрипт jython.sh использует cygpath, но в MSYS его нет, поэтому он возвращается к Cygwin, что приводит к указанной выше ошибке. Как это решить?


person Evgeni Sergeev    schedule 25.12.2013    source источник


Ответы (1)


Решение состояло в том, чтобы получить собственную версию MSYS cygpath отсюда: http://sourceforge.net/projects/cbadvanced/files/Msys%20Specific/cygpath-enhanced.7z/download

И поместите это в MSYS /bin

Затем запуск такого скрипта работает:

$ jython.sh test.j.py

Подробнее о MSYS cygpath.exe читайте здесь, в том числе о том, почему он не нужен: http://mingw.5.n7.nabble.com/enhanced-version-of-cygpath-td28556.html.

(Честно говоря, если бы он был включен в MSYS, то проекты начали бы полагаться на него, что не обязательно является лучшей идеей.)

Благодаря этому ответу за указатель: https://stackoverflow.com/a/18488099/1143274

person Evgeni Sergeev    schedule 25.12.2013