Я пытаюсь создать простое консольное 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 не открывается.На консоли не отображается никаких ошибок, но в пошаговом отладочном сообщении указывается следующая ошибка:
Поток цитаты [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, логическое) строка: недоступно Launcher $ AppClassLoader (ClassLoader) .loadClass (String, логическое) строка: недоступно Launcher $ AppClassLoader.loadClass (String, логическое) строка: недоступно
Launcher $ AppClassLoader(ClassLoader) .loadClass (String) строка: недоступно
ResourceBundle $ RBClassLoader.loadClass (String) строка: недоступно
CoreResourceBundleControl (ResourceBundle $ Control) .newBundle (String, Locale, String, ClassLoader, boolean) строка: недоступно
ResourceBundle.loadBundle (CacheKey, список, логическое значение) строка: недоступно ResourceBundle.findBundle (CacheKey, List, List, int, Control, ResourceBundle) строка: недоступно
ResourceBundle.getBundleImpl (String, Locale, ClassLoader, ResourceBundle $ Control) строка: недоступно
Строка ResourceBundle.getBundle (String, ResourceBundle $ Control): недоступно
Строка инструментария $ 3.run (): недоступна Строка AccessController.doPrivileged (PrivilegedAction): недоступно [собственный метод]
Строка инструментария. (): недоступно
Строка компонента (): недоступно
Строка Client.closefile (): 90 Строка клиента. (): 60
Строка Client.main (String []): 36
Этот же код отлично работает на 32-битной машине с Linux, поэтому я подозреваю, что проблема связана с Windows.
приведенный ниже код работает, как и ожидалось, как в Windows, так и в Linux, поэтому я подозреваю, что это может быть связано с различными путями обработки ввода с консоли в Windows по сравнению с Linux (CR LF).
import javax.swing.JFileChooser;
public class Example {
public static void main(String[] args) {
new JFileChooser().showOpenDialog(null);
}
}
Спасибо