我正在尝试创建一个简单的基于控制台的 java 应用程序,它要求用户从本地文件系统中选择文件。
控制台提示用户选择可用选项之一,然后打开给定的输入。
public Client() throws UnknownHostException, IOException {
printuseroptions();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char userdecision = br.readLine().charAt(0);
System.out.println(userdecision);
switch(userdecision){
case '1':
System.out.println("Which file would you like to open?");
openfile(br.readLine());
break;
case '2':
System.out.println("Which file would you like to close?");
closefile(br.readLine());
break;
}
private boolean openfile(String path){
System.out.println("openfile("+path+")");
return false;
}
private boolean closefile(String path){
System.out.println("closefile("+path+")");
new JFileChooser().showOpenDialog(null);
return false;
}
无论我做什么,JFileChooser 弹出框都不会打开。控制台上未显示任何错误,但调试步骤显示以下错误:
Blockquote Thread [main] (Suspended)
ClassNotFoundException(Throwable).(String, Throwable) 行:217
ClassNotFoundException(Exception).(String, Throwable) 行:不可用 ClassNotFoundException.(String) 行:不可用
URLClassLoader$1.run()行:不可用
AccessController.doPrivileged(PrivilegedExceptionAction, AccessControlContext) 行:不可用 [本机方法]
Launcher$ExtClassLoader(URLClassLoader).findClass(String) 行:不可用
Launcher$ExtClassLoader.findClass(String) 行:不可用
Launcher$ExtClassLoader(ClassLoader).loadClass(String, boolean) 行:不可用 Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) 行:不可用 Launcher$AppClassLoader.loadClass(String, boolean) 行:不可用
Launcher$ AppClassLoader(ClassLoader).loadClass(String) 行:不可用
ResourceBundle$RBClassLoader.loadClass(String) 行:不可用
CoreResourceBundleControl(ResourceBundle$Control).newBundle(String, Locale, String, ClassLoader, boolean) 行:不可用
ResourceBundle。 loadBundle(CacheKey, List, Control, boolean) 行:不可用 ResourceBundle.findBundle(CacheKey, List, List, int, Control, ResourceBundle) 行:不可用
ResourceBundle.getBundleImpl(String, Locale, ClassLoader, ResourceBundle$Control) 行:不可用
ResourceBundle.getBundle(String, ResourceBundle$Control) 行:不可用
Toolkit$3.run() 行:不可用 AccessController.doPrivileged(PrivilegedAction) 行:不可用 [本机方法]
Toolkit.() 行:不可用
Component.() 行:不可用
Client.closefile() 行:90 Client.() 行:60
Client.main(String[]) 行:36
相同的代码在 Linux 32 位机器上完美运行,所以我怀疑问题与 Windows 有关。
下面的代码在 Windows 和 Linux 上都按预期运行,所以我怀疑可能是由于在 Windows 与 Linux (CR LF) 中处理控制台输入的方式不同。
import javax.swing.JFileChooser;
public class Example {
public static void main(String[] args) {
new JFileChooser().showOpenDialog(null);
}
}
谢谢