部署使用Netbeans编译的Java应用程序-Can';找不到第三方类

部署使用Netbeans编译的Java应用程序-Can';找不到第三方类,java,deployment,Java,Deployment,我已经用Netbeans 6.8构建了我的应用程序。该应用程序包含对第三方产品(如Microsoft SQL Server数据库驱动程序和JIDE)的各种引用 编译时,它会生成一个dist文件夹,我认为您可以简单地将它复制到一个位置,这样就可以了 当我运行我的应用程序时,只要它在表单中遇到对JIDE类的引用,应用程序就会报告错误并退出 基本上,堆栈跟踪是: java.lang.reflect.InvocationTargetException 原因:java.lang.ClassNotFound

我已经用Netbeans 6.8构建了我的应用程序。该应用程序包含对第三方产品(如Microsoft SQL Server数据库驱动程序和JIDE)的各种引用

编译时,它会生成一个dist文件夹,我认为您可以简单地将它复制到一个位置,这样就可以了

当我运行我的应用程序时,只要它在表单中遇到对JIDE类的引用,应用程序就会报告错误并退出

基本上,堆栈跟踪是:

java.lang.reflect.InvocationTargetException
原因:java.lang.ClassNotFoundException:com.jidesoft.gantt.PeriodBackgroundPainter 位于java.net.URLClassLoader$1.run(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 在java.lang.ClassLoader.loadClass(未知源代码)

我已将JAR文件复制到JAR文件所在文件夹中的lib文件夹中。
\MyApp\MyJar.jar
\MyApp\lib\所有应用程序JAR

但是,当我将lib文件夹的内容复制到C:\Program Files\Java\jre6\lib\ext时,一切正常

我错过什么了吗?我在Vista SP2上运行

我构建了一个新的简单项目,使用了与JIDE组件相同的引用,并对其进行了编译。当我运行jar文件时,应用程序运行并显示组件。我能看到的项目之间唯一明显的区别是所用包的命名约定。我们的主应用程序不符合标准com.company.application命名,其中包含各种包名。我的应用程序使用com.company.application约定

干杯


Andez

这可能是一个类路径问题,当您执行java程序时,您需要设置类路径以包含程序所需的所有库。默认情况下,您将加载jre范围的库,这就是为什么将jar文件放在%JAVA_HOME%/lib或%JAVA_HOME%/lib/ext中会起作用的原因(但这些jar将可用于您可能不打算执行的任何代码)

例如,请确保在命令行中提供-classpath参数

javafoo.bar.Baz-classpath/lib/jide-oss.jar


为帮助乔恩干杯

我试图简化这里的帖子,因为我认为这是一个类路径问题。你给了我一些建议,办公室里有人对清单说了些什么,我看了一下jar文件的内容

我们的应用程序由许多第三方JAR和许多包组成,其中包括从第三方导入的类文件

我在jar中偶然发现META-INF文件夹,并注意到INDEX.LIST和MANIFEST.MF。我的另一个clean项目只有MANIFEST.MF文件。我从应用程序jar文件中删除了INDEX.LIST,一切正常。但每次我编译它时都会生成INDEX.LIST。我查看了ANT站点,但看不出为什么会生成这个

我再次查看了源代码,发现项目中有一个META-INF包。不太清楚它从哪里来或者是谁放的。但是我删除了它,所有的东西似乎都马上就可以工作了——尽管我只测试了大约5%的应用程序

干杯


Andez

不要将内容复制到jre6/lib/ext.s/may be/is/:-)欢迎使用SO。例如:C:\Windows\System32\java.exe-jar“MyAppJarFile.jar”-classpath/lib/My3rdPartyLib.jar是否需要指定引用的每个jar文件?或者我可以提供一个*通配符吗?我确实尝试过,但似乎在同一行代码上抛出了相同的异常。我在看我在Jar文件中玩的东西。我用WinRAR打开了它。当netbeans编译我的应用程序时,它在META-INF文件夹下创建了一个INDEX.LIST文件。我只是删除了这个文件,一切正常。我在我的另一个应用程序中注意到它没有构建这个,我不确定为什么?有什么想法吗?Cheers and zindex.LIST不应该给您带来任何问题,请参阅该文件的解释,查看在类路径上设置多个jar的详细信息。它不应该Cheers Jon put是一个虚假的META-INF包,有人添加到我们的应用程序中。Change jar.index=${jnlp.enabled}在project.properties中设置为jar.index=false,或者在Tools>Options>Java>Ant>properties中设置为更全局的jar.index=false。