我尝试将jnativehook添加到我的项目中,但是当我从控制台启动jar文件时,它说:
错误:无法找到或加载主类com.company.Main
我在IntelliJ IDEA中工作,只是创建了新的控制台应用程序并将jar添加到依赖项中。我尝试构建helloworld并从控制台运行它,它工作得很完美,但是当我更改programm以使用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>
Main,只有一类项目(主要是它的Keylogger示例): package 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问题,但找不到任何相似或有用的东西。
UPD: 这是我的清单:
Manifest-Version: 1.0
Main-Class: com.company.Main
我知道,IntelliJ会忽略.classpath,但如果你在项目设置中设置它,它可以使用.classpath。 而且,是的,我建造了jar,但它不起作用。
答案 0 :(得分:0)
您必须提供MANIFEST.MF文件。 该文件的内容应为:
Main-Class: my.package.Main
将此文件放在:
resources/META-INF/MANIFEST.MF