2016-03-03 88 views
1

我創建了一個JAVA應用程序來獲取IMDB電影評級。該應用程序需要一個命令行參數(電影名稱)並顯示相同的評級。我已將該應用程序添加到右鍵單擊上下文菜單。所以,現在當我右鍵單擊我需要文件名(無擴展名)作爲命令行參數傳遞。我怎樣才能做到這一點?用文件名作爲參數執行jar文件

我嘗試添加%1在註冊表中的佔位符,但它似乎並沒有工作。該應用程序從命令行使用參數工作。

有人可以幫助我嗎?

命令行:

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

OUTPUT:

enter image description here

右鍵菜單 enter image description here

錯誤

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" 
+0

那麼你在你的java程序中收到了什麼?什麼導致NPE? –

+0

電影的名稱是作爲命令行參數接收的。 當我右鍵點擊一個文件,該文件的名稱是suppossed接收,但沒有收到我猜,這導致NPE。 –

+0

是的,我明白這一點。修改程序以轉儲您實際收到的參數的值,以確保問題確實在傳遞參數。什麼會通過一個錯誤的論證導致NPE? –

回答

0

把你jar文件在您jre/lib/ext文件夾,然後編譯程序,而不-jar選項。

所有關於classpath的說法都是真實的,但這是一個持續而明智的生活場所。

通過查看Windows上的JAVA_HOME環境變量,您可以找到您的jre文件夾。