我为黑莓开发PhoneGap应用已经有一年了。突然,构建过程出现如下错误:
build:
[exec] [INFO] Parsing command line options
[exec] [INFO] Parsing bbwp.properties
[exec] [INFO] Validating application archive
[exec] [INFO] Parsing config.xml
[exec] [WARNING] Failed to find the <author> element
[exec] [INFO] Populating application source
[exec] [INFO] Compiling BlackBerry WebWorks applicatio
n
[exec] I/O Error: Cannot run program "C:Program": CreateProcess error=2, T
he system cannot find the file specified
[exec] [ERROR] RAPC exception occurred
我怀疑这可能与最近的Java更新有关(Java 7可能?)
我尝试了旧的DOS 8.3技巧,在bbwp.properties
和project.properties
文件中使用PROGRA~1
而不是Program Files
。这些似乎都无济于事。
你知道问题还可能在哪里吗?
我在网上看到一些人在问同样的问题,所以我把我的解决方案贴在这里,以防将来对那些遇到这个问题的人有所帮助。
问题的根源似乎与升级到Java 7有关。它和Apache Ant的组合会挂起带有空格的文件路径。经过几个小时的修补,最好的解决方案是重新安装Java、Apache Ant、WebWorks和PhoneGap。每个文件都被放置在C:驱动器根目录下的文件夹中,文件名中没有空格。
C:
├ ant
├ java
├ phonegap
└ webworks
一旦我有了这个组织结构,并重置了所有的环境变量(PATH、JAVA_HOME、ANT_HOME等),构建就又开始工作了。只要确保你更新了你的项目。
更新:
使用DOS Where命令查看Java在硬盘上的位置也可能很有帮助。
> where java
在我的例子中,JAVA_HOME路径指向Java 1.6,但是从命令行(java -version
)检查Java版本显示正在运行Java 1.7。原因是Java.exe已安装在我的C:WindowsSystem32文件夹中(为什么?),并且由于该文件夹是我的PATH变量中的第一个条目,因此该版本的Java.exe将运行。总是这样。
底线:使用DOS Where命令确保ANT运行的java版本确实是您认为的那个版本
问题是Webworks安装程序将JAVA PATH复制到几个文件:
installvariables.properties (<java>XXXXXXXXXXX</java>)
binbbwp.properties (Java_Home=XXXXXXXXXXXX)
这将导致编译时出现错误,即使您已经更改了PATH变量和JAVA安装。
将值更改为这些文件中的正确路径以解决问题。
建议将所有这些东西安装在非空白路径中,因为这会导致其他编译问题。