我在Netbeans中使用DropboxAPI开发了一个应用程序,我正在使用Swing来构建GUI。
如果我从IDE运行它,该应用程序工作正常,但在我清理和构建它之后,/ dist中的.jar文件根本不会打开。
所以我打开了命令行,我发现了这个错误
java -jar "%PATH_TO_MY_APP%\FileTransferSpeedMonitor.jar"
Error: An unexpected error occurred while trying to open file %PATH_TO_MY_APP\FileTransferSpeedMonitor.jar
所以我决定用不同的关键词进行多次搜索,但无济于事。 最奇怪的是,当我尝试运行其中包含静态void main方法的.class文件时,我得到的错误是没有定义主方法,尽管它在IDE中工作正常。
我不确定下面的不匹配是否相关,因为其他swing应用程序工作正常(例如:Celsius Fahrenheit教程),无论如何,我的应用程序似乎没有抛出任何异常或任何迹象表明出现了问题但我需要找出造成这一切的原因。
C:\Users>java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)
和Netbeans 7.3.1
Product Version: NetBeans IDE 7.3.1 (Build 201306052037)
Java: 1.7.0_05; Java HotSpot(TM) Client VM 23.1-b03
Runtime: Java(TM) SE Runtime Environment 1.7.0_05-b05
System: Windows 7 version 6.1 running on x86; Cp1252; en_US (nb)
...
稍后编辑#1 - 添加了manifest.mf数据
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_05-b05 (Oracle Corporation)
Class-Path: lib/dropbox-core-sdk-1.7.5-javadoc.jar lib/dropbox-core-sd
k-1.7.5-sources.jar lib/dropbox-core-sdk-1.7.5.jar lib/jackson-core-2
.2.3.jar lib/org-apache-commons-io.jar
X-COMMENT : Main-Class will be added automatically by build
Main-Class: dbftsm.swing.ExploreDBX
稍后编辑#2 - 从CLI添加输出,根本没有任何意义
%path_to_buld%\dist>java FileTransferSpeedMonitor.jar
Error: Could not find or load main class FileTransferSpeedMonitor.jar
答案 0 :(得分:1)
清单文件必须位于具有确切位置META-INF/MANIFEST.MF
的JAR中。
您的dist
文件夹必须包含lib
文件夹中所有必需的依赖项,通常为:
%path_to_buld%\dist\lib\dropbox-core-sdk-1.7.5.jar
%path_to_buld%\dist\lib\jackson-core-2.2.3.jar
%path_to_buld%\dist\lib\org-apache-commons-io.jar
在-sources.jar
属性中声明-javadoc.jar
或Class-Path
没有意义。
缺少-jar
选项解释了您的上次测试错误消息。