在构建JPostal时,我发出了命令:
./gradlew assemble
我得到以下错误:
checking for gcj... no
checking for guavac... no
checking for jikes... no
checking for javac... no
configure: error: no acceptable Java compiler found in $PATH
make: *** No rule to make target 'install'. Stop.
:buildJniLib FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':buildJniLib'.
> Process 'command 'sh'' finished with non-zero exit value 2
问题是我已经将java编译器的正确路径添加到环境变量中。事实上,当我在CMD
中键入javac
时,它会显示所有javac
选项,如本SO答案中讨论的那样。例如,在命令行中键入javac-version
会显示正确的版本:javac 1.8。0_191
我还按照本主题中的建议设置了< code>JAVA_HOME环境变量。
为什么没有检测到 Java 编译器?
更新1:
三个命令的输出查看当前本地、用户和系统Path
的定义。
本地路径:
set path
Path=C:\x\Java\jdk1.8.0_191\bin;C:\x\ProgramFiles\Firefox;C:\Windows\System32;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
用户路径:
reg query HKCU\Environment /v Path
ERROR: The system was unable to find the specified registry key or value.
系统路径:
reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v Path
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
Path REG_SZ C:\x\Java\jdk1.8.0_191\bin;C:\x\ProgramFiles\Firefox;C:\Windows\System32;
发布更新4之前的信息后,根据环境变量控制面板对话窗口的建议修改系统路径,以:
%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
%SystemRoot%\System32\WindowsPowerShell\v1.0\
%SystemRoot%\System32\OpenSSH\
C:\x\Java\jdk1.8.0_191\bin
C:\x\ProgramFiles\Firefox
请参见以下路径
的系统定义环境变量的屏幕截图:
注意:我没有删除Firefox,因为内部原因需要它,我认为它不会影响其他定义的变量。
更新2:
当我在< code>MSYS2窗口中执行命令< code>which java时,我得到以下输出:
which: no java in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
我不明白它为什么不检测Java。
更新3:
当我在CMD
中执行java命令时
,我得到以下内容:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\x\Java\jdk1.8.0_191\bin\java.exe
更新 4:
在 MSYS2 中
,我发出了以下命令:
export PATH=$PATH:"C:\x\Java\jdk1.8.0_191\bin"
这似乎解决了javac
的问题:
checking for javac... javac
checking if javac works... yes
checking for C:\x\Java\jdk1.8.0_191/include/jni.h... yes
但是,我还是不明白为什么它没有正确读取环境变量。
此外,由于以下原因,构建仍然失败:
checking for gcj... no
checking for guavac... no
checking for jikes... no
checking for javac... javac
checking if javac works... yes
checking for C:\x\Java\jdk1.8.0_191/include/jni.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for size_t... yes
checking for uint16_t... yes
checking for GNU libc compatible malloc... yes
checking for strdup... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBPOSTAL... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/main/c/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Making install in src/main/c
make[1]: Entering directory '/c/x/ProgramFiles/JPostal/src/main/c'
/bin/sh ../../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../.. -I/mingw64/include -g -O2 -IC:\x\Java\jdk1.8.0_191/include -MT libjpostal_parser_la-jpostal_AddressParser.lo -MD -MP -MF .deps/libjpostal_parser_la-jpostal_AddressParser.Tpo -c -o libjpostal_parser_la-jpostal_AddressParser.lo `test -f 'jpostal_AddressParser.c' || echo './'`jpostal_AddressParser.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../.. -I/mingw64/include -g -O2 -IC:xJavajdk1.8.0_191/include -MT libjpostal_parser_la-jpostal_AddressParser.lo -MD -MP -MF .deps/libjpostal_parser_la-jpostal_AddressParser.Tpo -c jpostal_AddressParser.c -DDLL_EXPORT -DPIC -o .libs/libjpostal_parser_la-jpostal_AddressParser.o
jpostal_AddressParser.c:1:10: fatal error: jni.h: No such file or directory
1 | #include <jni.h>
| ^~~~~~~
compilation terminated.
make[1]: *** [Makefile:473: libjpostal_parser_la-jpostal_AddressParser.lo] Error 1
make[1]: Leaving directory '/c/x/ProgramFiles/JPostal/src/main/c'
make: *** [Makefile:404: install-recursive] Error 1
更新5:
请参阅下面的屏幕截图,显示安装Java的目录:
更新6:
下面的屏幕截图显示了 Java 安装文件夹中存在的 jni.h
文件:
我将仔细研究构建过程的功能。您的问题表明您正在发出“gradlew”命令,所以首先要检查的是“gradleu--version”。如果您从中获得了Gradle和Java的预期版本,那么您的操作系统环境就一切正常。由于您的问题也提到了“Make”,我相信gradle正在调用Make。如果是这样的话,那么看看当Make启动时(Gradle)提供了什么环境。最好的猜测是“Make”所使用的环境与操作系统所使用的不同。e、 g.它具有不同的(或不存在的)$PATH或$JAVA_HOME。很容易检查…在“Makefile”中,让它输出诸如“env”或$PATH或$JAVA_HOME之类的内容-验证它们是否符合您的期望。
我正在使用Visual Studio2013进行CUDA(7.0)项目。该项目为64bit。我正在使用驱动程序API,需要从ptx或cubin文件加载模块。但我找不到文件。在VS I go properties->cuda C/C++->common->nvcc编译类型中,将其更改为-cubin或ptx。编译器完成ok但我找不到那个文件。我只能在output debug目录中看到kernel.cu
也许你们中的某个人有解决办法。
我正在使用Eclipse和Gradle。Twilio被列为依赖项。所有版本都是最新的。引用Gradle的代码将无法编译,并返回Twilio类不存在的错误消息。在线代码令人沮丧地过时了。我希望这里有人能帮忙。 我正在运行的代码非常基本:
我在Eclipse中pom.xml中收到错误消息。 http://Maven.apache.org/Maven-v4_0_0.xsd“>4.0.0com.hmis chmis war 1.0-快照chmis Maven Webapp http://Maven.apache.org 这是我的pom.xml。当我运行该程序时,会出现如下错误。
问题内容: 我正在尝试使用Ant将Web应用程序打包到war文件中。 构建时,出现以下错误: 以下是我的build.xml 如何编译没有主类的类文件? 如何设置课程路径? 作为参考,我正在使用Eclipse。 问题答案: 除了需要在JDK的/ lib目录中的tools.jar的javac任务以外,所有您的蚂蚁工具都可以正常工作,在这种情况下,JRE是不够的。因此,来自ant的提示是:“无法找到ja
我无法从命令行编译Maven项目。我使用的是Maven版本: Apache Maven 3.5.4 null 这是我的pom.xml(没有依赖项): 新的堆栈跟踪是: