下载最新的Java SE。在http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html通过JNLP运行FileChooserDemo 工作良好。 (Windows框。)
从http://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#JWSFileChooserDemo
下载源代码遵循java源代码中的编译指令:
C:components> javac -classpath .;jars/jnlp.jar JWSFileChooserDemo.java
这很好用。组件dir中生成两个类文件。然后......
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并且适合我的目的。我仍然不明白为什么上面给出的命令不起作用。
答案 0 :(得分:1)
请按照以下步骤操作:
在C Drive
:
components-JWSFileChooserDemoProject
|
------------------------------------
| | | |
nbproject src build.xml manifest.mf
|
components
|
-------------------------------------------------
| | | |
images jars | |
JWSFileChooserDemo.java JWSFileChooserDemo.jnlp
在components Directory
下创建一个名为Directory
的新build
,现在Directory - components
将有五件事,而不是四件build
,images
,jars
,JWSFileChooserDemo.java
和JWSFileChooserDemo.jnlp
。
现在先转到components Directory
。
编译编写此命令:
C:\components-JWSFileChooserDemoProject\src\components>javac -classpath images\*;jars\*;build -d build JWSFileChooserDemo.java
在-classpath
选项中,您指定在编译{{1}时要包含Directories
images
,jars
和build
的内容}。 JWSFileChooserDemo.java
选项基本上说明了-d
文件的放置位置。
移至.class
文件夹:
"build"
运行程序:
C:\components-JWSFileChooserDemoProject\src\components>cd build
此处C:\components-JWSFileChooserDemoProject\src\components\build>java -cp .;..\images\*;..\jars\* components.JWSFileChooserDemo
选项-cp
内部代表,从当前位置看.
表示从当前位置..\images\*
内升一级并获取全部它的内容和images Directory
内容相同。
现在您将看到它正常工作,并提供以下输出:
由于您希望在..\jars\*
没有-d
选项的情况下执行此操作。与以前一样考虑相同的目录结构,移到Java Compiler - javac
。
使用此命令进行编译:
components Directory
现在在C:\components-JWSFileChooserDemoProject\src\components>javac -classpath images\*;jars\* JWSFileChooserDemo.java
中手动创建package structure
,即创建File System
,然后在新创建的Directory components
内移动之前创建的.class
个文件,并将components Directory
文件夹添加到此新创建的images
文件夹中。
现在components
将有五件事,而不是四件,即Directory - components
,components(which further contains JWSFileChooserDemo.class , JWSFileChooserDemo$1.class and images folder)
,images
,jars
和JWSFileChooserDemo.java
。
使用此命令运行程序:
JWSFileChooserDemo.jnlp
这将为您提供以前的输出,但是,如果您想按照之前的建议移动,请再次将C:\components-JWSFileChooserDemoProject\src\components>java -cp .;jars\* components.JWSFileChooserDemo
文件夹复制到自动生成的images
文件夹,因为我只是查看了{{1他们使用components
来实现它。
如果在之前给出的.java
命令之后,如果你不想创建任何文件夹,那么进入一级,即在组件目录外,并使用此命令运行程序
relative path
如果你不想