【发布时间】:2016-05-21 23:56:13
【问题描述】:
我尝试将jnativehook 添加到我的项目中,但是当我从控制台启动 jar 文件时,它显示:
错误:无法找到或加载主类 com.company.Main
我在 IntelliJ IDEA 工作,只是创建了新的控制台应用程序并将 jar 添加到依赖项。我尝试构建 helloworld 并从控制台运行它,它运行良好,但是当我将程序更改为使用 jnativehook 时,java 开始给我一个错误。顺便说一句,程序在 IntelliJ IDEA 控制台中运行良好,运行良好。
我用这个命令启动 jar:
java -jar consolerunner.jar
我的 .classpath 看起来没问题,无论如何,这里是:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="var" path="USER_HOME/Desktop/jnativehook-2.0.3.jar"/>
<classpathentry kind="output" path="out/production/ConsoleRunner"/>
</classpath>
主要的,只有一类项目(主要是键盘记录器示例): 包 com.company;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main implements NativeKeyListener {
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
try {
GlobalScreen.unregisterNativeHook();
} catch (NativeHookException e1) {
e1.printStackTrace();
}
}
}
public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
public void nativeKeyTyped(NativeKeyEvent e) {
System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
}
public static void main(String[] args) {
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println("There was a problem registering the native hook.");
System.err.println(ex.getMessage());
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new com.company.Main());
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.OFF);
}
}
如何构建 jar(或者我只是错误地启动它)以在控制台中工作?
我尝试在 ant 中构建它,但没有任何进展。 也许,我错误地导入了 jnahook jar,但此时我太迷茫了,我真的不知道该怎么办。 我阅读了很多 stackoverflow 问题,但找不到任何类似或有用的内容。
统一更新: 这是我的清单:
Manifest-Version: 1.0
Main-Class: com.company.Main
我知道,IntelliJ 会忽略 .classpath,但它可以使用 .classpath,如果您在项目设置中设置它。 而且,是的,我构建了 jar,但它不起作用。
【问题讨论】:
-
一个.classpath是eclipse使用的东西,IDEA会忽略这个文件
标签: java intellij-idea executable-jar