2016-02-11 104 views
0

我尝试添加jnativehook到我的项目,但是当我从控制台启动jar文件,它说:的Java找不到主类当我运行jar文件

Error: Could not find or load main class com.company.Main

我在IntelliJ IDEA的工作,简单地创建新的控制台应用程序并将jar添加到依赖项。我试图构建helloworld并从控制台运行它,它的工作原理非常完美,但是当我将程序更改为使用jnativehook时,java开始给我一个错误。顺便说一下,程序在IntelliJ IDEA控制台中完美运行,运行并一切正常。

我开始罐子用这个命令:

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> 

为主,而只有一个类的项目(大多数情况下,它是键盘记录的例子): 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(或者也许我jast错误启动它)在控制台中工作?

我试着在蚁中构建它,没有任何进展。 也许,我错误的导入jnahook jar,但是在这一点上我太迷了,我真的不知道该怎么做。 我读了很多stackoverflow的问题,找不到任何相似或有帮助的东西。

UPD: 这里是我的清单:

Manifest-Version: 1.0 
Main-Class: com.company.Main 

我知道,什么样的IntelliJ忽视的.classpath,但它可以使用的.classpath,如果在项目设置中设置它。 而且,是的,我建立了jar,但它不起作用。

+0

一个的.classpath是什么,Eclipse使用,IDEA忽略该文件 –

回答

0

您必须提供MANIFEST.MF文件。 这个文件的内容应该是:

Main-Class: my.package.Main 

将该文件放在:

resources/META-INF/MANIFEST.MF 
+0

你也可以提供在主类控制台 Java的罐子consolerunner.jar my.package.MainClass –

+0

所以,我认为这是一切ok我的清单 那就是: 清单-版本:1.0 主类:com.company.Main – hoholok

相关问题