2013-07-12 2 views
8

У меня есть одна программа Java, которая просматривает путь нашей локальной файловой системы, для этого мы использовали JFileChooser. Если имя папки в простом английском прекрасно работает в Windows, Mac OS X и Linux. Но если я создаю папку с именем special character like - ábc Eóz, тогда она показывает это специальное имя персонажа только для Windows и Linux, но в OS X я не могу видеть эти специальные папки символов. Он игнорирует их из списка папок.JfileChooser игнорирует специальные папки символов в OS X

Моя программа построена на Java 7 обновлений 21. Mac OS X версии 10.8.2 -

Как я могу решить эту проблему?

Благодаря

UPDATE: Мы создаем приложение для Mac с помощью JavaFX упаковки. Когда мы запускаем app.jar напрямую, он показывает мне путь, содержащий специальный символ. Но если мы пытаемся запустить приложение с помощью приложения, оно пропускает специальные папки символов.

+0

Связанный: http://stackoverflow.com/questions/14072619/jfilechooser-on-mac-cannot-see-files-named-by-chinese-chars и http://stackoverflow.com/questions/1545625/java -cant-open-a-file-with-surrogate-unicode-values-in-the filename – Jayan

+0

Вы пробовали '-Dfile.encoding = UTF-8', как упоминалось в вышеупомянутых ссылках? –

+0

@ShadowCreeper Я не заметил комментариев в одном из вопросов, упоминающих -Dfile.encoding = UTF-8, я попробую, когда вернусь домой. Где я должен поставить эту команду? Это параметр при запуске JVM или что-то, что должно быть помещено где-то в моем коде? –

ответ

0

Как мы строим приложение с помощью JavaFX упаковки и у нас есть пользовательские Info.plist хранится внутри ..buildscript_path/пакет/MacOSX/папки на локальном пути.

Проблема с игнорированием специальных символов разрешается путем добавления следующих ключей к Info.plist.

<key>LSEnvironment</key> 
<dict> 
    <key>LANG</key> 
    <string>en_US.UTF-8</string> 
</dict> 

При добавлении этой строки кода в info.plist, тогда приложение для установки решило мою проблему.

Благодаря

+0

Кажется, что я не заметил тег JavaFX в вопросе, когда я разместил щедрость, и я не думал, что это действительно изменит ситуацию. Я не использую JavaFX для своего приложения, поэтому это решение не будет работать для меня. Спасибо за ответ, однако, он, вероятно, пригодится для других людей. –

2

Я просто попытался образец:

import javax.swing.*; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import java.awt.*; 

public class Trial { 
    public static void main(String... args) { 
     JFrame frame = new JFrame("FrameDemo"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel emptyLabel = new JLabel(); 

     frame.getContentPane().add(emptyLabel, BorderLayout.CENTER); 

     frame.pack(); 

     frame.setVisible(true); 

     JFileChooser chooser = new JFileChooser(); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif"); 
     chooser.setFileFilter(filter); 
     int returnVal = chooser.showOpenDialog(frame); 
     if(returnVal == JFileChooser.APPROVE_OPTION) { 
      System.out.println("You chose to open this file: " + 
        chooser.getSelectedFile().getName()); 
     } 
    } 
} 

на OS X 10.9.1 работает JDK 1.7.0_51. Я создал следующую иерархию папок: ~/Documents/Joyeux Naufragés/ábc Eóz: enter image description here.

Для решения этой проблемы вы описали, я установил также JDK вы отметили, JDK_1.7.0_25 и мне удалось воспроизвести тот же вопрос, вот снимок для того же самого окна под управлением U25 enter image description here

Как можно видеть, что папки, содержащие специальные символы, не отображаются. Поэтому я также проверил JDK 1.7.0_40 и удивил - он работает. После этого я перешел в bugs, исправленный в данной версии, я обнаружил, что некоторые ошибки связаны с mac os x, где исправлено в этой версии. Среди них пара (7024118, 7032018, 7032436, 7161437) относится к проблемам в JFileChooser. Существуют и другие проблемы, связанные с mac (всего 45), из которых один относится к FileDialog. К сожалению, ссылки на описания ошибок не работают, поэтому я не могу опубликовать дополнительную информацию по этому вопросу, но решение для вашей проблемы, безусловно, должно быть обновлено по крайней мере до версии 1.7.0_40, даже если я полагаю, что лучше всего было бы обновить до последний (1.7.0_51).

Удачи вам в работе. Я надеюсь, это поможет вам.

+0

Привет, спасибо за ответ. Это похоже на то, что я пробовал, и папки и файлы со специальными символами (например, «é» в этом случае) по-прежнему не отображаются. Я запускаю jdk1.7.0_25 на OS X 10.9.1. –

+0

@AdamSmith - спасибо за отзыв, это то, чего я ждал, чтобы быть честным. –

Смежные вопросы