运行jar文件时Java找不到主类[重复]
Posted
技术标签:
【中文标题】运行jar文件时Java找不到主类[重复]【英文标题】:Java can't find main class when i run jar file [duplicate] 【发布时间】: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,但此时我太迷茫了,我真的不知道该怎么办。 我阅读了很多 *** 问题,但找不到任何类似或有用的内容。
统一更新: 这是我的清单:
Manifest-Version: 1.0
Main-Class: com.company.Main
我知道,IntelliJ 会忽略 .classpath,但它可以使用 .classpath,如果您在项目设置中设置它。 而且,是的,我构建了 jar,但它不起作用。
【问题讨论】:
一个.classpath是eclipse使用的东西,IDEA会忽略这个文件 【参考方案1】:您必须提供一个 MANIFEST.MF 文件。 这个文件的内容应该是:
Main-Class: my.package.Main
将此文件放入:
resources/META-INF/MANIFEST.MF
【讨论】:
你也可以在你的控制台中提供主类 java -jar consolerunner.jar my.package.MainClass 所以,我认为我的清单没问题,它是:Manifest-Version: 1.0 Main-Class: com.company.Main以上是关于运行jar文件时Java找不到主类[重复]的主要内容,如果未能解决你的问题,请参考以下文章