下载了最新的 Java SE。通过 JNLP 在http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html运行 FileChooserDemo 工作正常。(窗口框。)
从http://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#JWSFileChooserDemo下载源代码
按照java源代码中的编译说明:
C:components> javac -classpath .;jars/jnlp.jar JWSFileChooserDemo.java
这工作正常。在 components 目录中生成了两个类文件。然后...
C:components>cd ..
C:src> java -classpath .;jars/jnlp.jar components.JWSFileChooserDemo
Exception in thread "main" java.lang.NoClassDefFoundError:javax/jnlp/UnavailableServiceException
at java.lang.Class.getDeclaredMethods0(Native Method)
.
.
.
所以UnavailableServiceException.class
没有找到。但是,如果您列出 jar 文件,则该类就在那里。所以我的类路径是错误的。
C:jars> tar tf jnlp.jar
META-INF/
META-INF/MANIFEST.MF
javax/jnlp/
javax/jnlp/BasicService.class
javax/jnlp/ClipboardService.class
javax/jnlp/DownloadService.class
javax/jnlp/DownloadServiceListener.class
javax/jnlp/ExtensionInstallerService.class
javax/jnlp/FileContents.class
javax/jnlp/FileOpenService.class
javax/jnlp/FileSaveService.class
javax/jnlp/JNLPRandomAccessFile.class
javax/jnlp/PersistenceService.class
javax/jnlp/PrintService.class
javax/jnlp/ServiceManager.class
javax/jnlp/ServiceManagerStub.class
javax/jnlp/UnavailableServiceException.class
我在 Mac OSX 上试过这个(你必须在类路径中将分号更改为冒号)和同样的事情。
更新:我在网上找到了这个演示的旧版本,它不能UnavailableSewrviceException
独立使用和编译。它适用于当前的 Java 并适合我的目的。我仍然不明白为什么上面给出的命令不起作用。