JNativeHook Ant编译错误:“无法运行程序'sh'”

时间:2017-03-17 12:18:44

标签: java ant java-native-interface jnativehook

我正在尝试在Windows 7系统上编译JNativeHook源代码。通过在根文件夹中提供ant all命令,我收到以下错误:

C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master>ant all
Buildfile: C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\build.xml
init:
 [echo] Initializing local build environment...
 [echo] Project:            jnativehook 2.1.20170317
 [echo] Debug:              false
 [echo] Java Compiler:      modern
 [echo] Java Source:        1.8
 [echo] Java Target:        1.8
 [echo] Java Include:       C:\Program Files\Java\jdk1.8.0_102/include
 [echo] Java Args:
 [echo] Native Lib:         JNativeHook.dll
 [echo] Native OS:          windows
 [echo] Native Arch:        x86_64
 [echo] Native Toolchain:   gcc
 [echo] Native CFLAGS:      -O2 -pipe
 [echo] Native LDFLAGS:
[propertyfile] Creating new property file: C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\build.properties

compile-java:
 [echo] Compiling Java source...
[mkdir] Created dir: C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\bin\class\java
[javac] Compiling 27 source files to C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\bin\class\java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\AbstractSwingInputAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\DefaultLibraryLocator.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\GlobalScreen.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\NativeHookException.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\NativeInputEvent.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\NativeLibraryLocator.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\NativeMonitorInfo.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\NativeSystem.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\dispatcher\DefaultDispatchService.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\dispatcher\SwingDispatchService.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\example\NativeHookDemo.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\keyboard\NativeKeyAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\keyboard\NativeKeyEvent.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\keyboard\NativeKeyListener.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\keyboard\SwingKeyAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseEvent.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseInputAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseInputListener.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseListener.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseMotionAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseMotionListener.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseWheelAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseWheelEvent.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\NativeMouseWheelListener.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\SwingMouseAdapter.java
[javac] C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\java\org\jnativehook\mouse\SwingMouseWheelAdapter.java

download-libuiohook:

bootstrap-libuiohook:
 [echo] Bootstrapping libUIOHook...
[autoreconf] autoreconf --verbose --force --install

BUILD FAILED
C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\build.xml:345:
Execute failed: java.io.IOException:
Cannot run program "sh" (in directory"C:\Users\Nrusingh\Downloads\jnativehook-master (1)\jnativehook-master\src\libuiohook"):
CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at java.lang.Runtime.exec(Runtime.java:620)
    at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440)
    at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629)
    at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670)
    at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496)
    at org.jnitasks.autotools.AutoreconfTask.execute(AutoreconfTask.java:113)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.Main.runBuild(Main.java:857)
    at org.apache.tools.ant.Main.startAnt(Main.java:236)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 24 more

Total time: 6 seconds

任何人都可以通过建议正确的构建过程来帮助我构建它吗?

1 个答案:

答案 0 :(得分:0)

错误如下:

  

无法运行程序&#34; sh&#34;

&#34; SH&#34;是MSYS2提供的程序。 MSYS2 is required to build JNativeHook on Windows

  

我们将使用MSys2编译JNativeHook。

按照JNativeHook网站上的说明,了解如何构建源代码。