2016-02-11 144 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

相關問題