Buildozer在cygwin下不能使用java

时间:2014-05-25 08:19:54

标签: java android build cygwin winreg

我在我的cygwin环境中试图buildozer android debug deploy。到目前为止它工作得很好,但在尝试构建时,我遇到了以下错误:

$ buildozer android debug deploy
# Check configuration tokens
# Ensure build layout
# Check configuration tokens
# Preparing build
# Check requirements for android
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 92, in check_requirements
self._set_win32_java_home()
File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 186, in _set_win32_java_home
    import _winreg
ImportError: No module named _winreg
# Install platform
# Apache ANT found at /home/Data/.buildozer/android/platform/apache-ant-1.8.4
# Android SDK found at /home/Data/.buildozer/android/platform/android-sdk-21
# Android NDK found at /home/Data/.buildozer/android/platform/android-ndk-r9c

ERROR: No suitable Java found. In order to properly use the Android Developer
Tools, you need a suitable version of Java JDK installed on your system.
We recommend that you install the JDK version of JavaSE, available here:
  http://www.oracle.com/technetwork/java/javase/downloads

You can find the complete Android SDK requirements here:
  http://developer.android.com/sdk/requirements.html

# Android packages installation done.
# Check application requirements
# Check garden requirements
# Compile platform
# Command failed: ./distribute.sh -m "kivy" -d "first_kivy_test"

有趣的是,如果我在cygwin中java -version返回

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

所以cygwin确实知道java。我在这里缺少什么?

编辑:好的,我已尝试在第92行的buildozer的android.py文件中执行以下操作:

import cygwinreg as _winreg

但是这只是给了我以下错误,而不是_winreg无法识别:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 92, in check_requirements
self._set_win32_java_home()
  File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 191, in _set_win32_java_home
self.buildozer.environ['JAVA_HOME'] = java_home
  File "/usr/lib/python2.7/site-packages/cygwinreg-1.0-py2.7.egg/cygwinreg/__init__.py", line 146, in __exit__
self.Close()
NameError: global name 'self' is not defined

EDIT2:

我设法纠正了这个错误:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 92, in check_requirements
    self._set_win32_java_home()
  File "/usr/lib/python2.7/site-packages/buildozer-0.15_dev-py2.7.egg/buildozer/targets/android.py", line 187, in _set_win32_java_home
with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\JavaSoft\Java Development Kit") as jdk: #@UndefinedVariable
AttributeError: __exit__

编辑3:

我已经将环境变量JAVA_HOME设置为我的SDK路径,因此不会出现问题。我认为这是winreg无法正确导入该路径的问题。

编辑4: 在一个名叫Gavin Bravery的好人的帮助下,我现在不再得到其他错误,而不是java错误。尝试

时的当前输出
buildozer android debug deploy

# Check configuration tokens
# Ensure build layout
# Check configuration tokens
# Preparing build
# Check requirements for android
cygwin warning:
  MS-DOS style path detected: C:\Program Files (x86)\Java\jdk1.7.0_10/bin/javac.exe
  Preferred POSIX equivalent is: /cygdrive/c/Program Files     (x86)/Java/jdk1.7.0_10/bin/javac.exe
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
# Install platform
# Apache ANT found at /home/Data/.buildozer/android/platform/apache-ant-1.8.4
# Android SDK found at /home/Data/.buildozer/android/platform/android-sdk-21
# Android NDK found at /home/Data/.buildozer/android/platform/android-ndk-r9c

ERROR: No suitable Java found. In order to properly use the Android Developer
Tools, you need a suitable version of Java JDK installed on your system.
We recommend that you install the JDK version of JavaSE, available here:
  http://www.oracle.com/technetwork/java/javase/downloads

You can find the complete Android SDK requirements here:
  http://developer.android.com/sdk/requirements.html


# Android packages installation done.
# Check application requirements
# Check garden requirements
# Compile platform
# Command failed: ./distribute.sh -m "kivy" -d "kivytest"

export JAVA_HOME=$( cygpath "JAVA_HOME" )

我可以绕过路径警告,所以它可以找到"找不到合适的Java。"错误即可。有没有人对此有所了解?

2 个答案:

答案 0 :(得分:2)

您尝试在哪个操作系统版本上运行此操作系统?偶尔cygwin会在32位操作系统上显示奇怪的行为。

答案 1 :(得分:0)

你指的是java jre还是jdk?我想你指的是jre。通常那些基于java的更开发的应用程序需要jdk版本。

看:What is the difference between JDK and JRE?