【问题标题】:Executing jar file with file name as argument以文件名作为参数执行 jar 文件
【发布时间】:2016-03-03 17:32:39
【问题描述】:

我创建了一个 JAVA 应用程序来获取电影的 IMDB 评级。该应用程序采用一个命令行参数(电影名称)并显示相同的评级。我已将应用程序添加到右键单击上下文菜单中。所以,现在当我右键单击时,我需要将文件名(不带扩展名)作为命令行参数传递。我怎样才能做到这一点?

我尝试在注册表中添加%1 作为占位符,但它似乎不起作用。该应用程序使用参数从命令行运行。

有人可以帮我吗?

命令行:

java -jar C:\NetBeansProjects\APPLICATION\dist\APPLICATION.jar daredevil

输出:

右键菜单

错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at application.IMDB.IMDBFetch(IMDB.java:67)
    at application.IMDB.URLParse(IMDB.java:54)
    at application.IMDB$4.run(IMDB.java:387)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$300(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

注册表项

java -jar "C:\NetBeansProjects\APPLICATION\dist\APPLICATION.jar" "%1"

【问题讨论】:

  • 那么你在你的java程序中收到了什么?是什么导致了 NPE?
  • 电影名称作为命令行参数接收。当我右键单击一个文件时,应该会收到文件的名称,但我猜没有收到,这会导致 NPE。
  • 是的,我明白这一点。修改您的程序以转储您实际收到的参数的值,以确保问题确实在于传递参数。传递错误参数会导致 NPE 什么?

标签: java contextmenu desktop-application right-click


【解决方案1】:

将您的jar 文件放入您的jre/lib/ext 文件夹中,然后在没有-jar 选项的情况下编译您的程序。

关于classpath 的所有说法都是正确的,但这是一个始终如一且明智的生活场所。

您可以通过查看 Windows 上的 JAVA_HOME 环境变量找到您的 jre 文件夹。

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2018-08-11
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多