Mac OS下使用eclipse的奇怪问题

liujiboy 2012-08-18 05:23:02
在Mac OS下遇到了奇怪的乱码问题。
先给一段代码
import java.io.File;
import java.io.IOException;
public class Test {

public static void main(String[] args) throws IOException {
File file=new File("测试");
System.out.println(file.getCanonicalPath());
}
}
这段代码在Mac OS的命令行下执行完全没有问题,能够正确输出中文路径。
切换到eclipse下,如果使用苹果自带的JDK 1.6,也能够正常执行输出正确的中文路径。
但是若是采用SUN的JDK1.7,输出的路径就是乱码了,并且只要是涉及中文路径操作的全部都会出错。
出现这个问题之后,我进行了很多测试。
在Mac OS的命令行下用JDK1.7编译执行上述代码,OK,完全没有问题。
甚至在命令行下启动eclipse然后用jdk1.7编译,仍然能够得到正确的结果。
因此我怀疑是环境变量的问题,于是在eclipse中run configuration里面添加了一个“环境变量”(注意不是jvm的环境变量,而是系统环境变量)
LANG=zh_CN.UTF-8
在运行上述程序,一切就正常了。

本来这个问题解决了,但是今天遇到一个新的情况。
那就是如果用jdk1.7运行eclipse,那么eclipse中所有涉及中文文件名的操作全部会失效。
例如创建一个中文目录。

请问有朋友在Mac os下用jdk1.7运行eclipse吗?这个问题如何解决?
我觉得如果能够在eclipse启动时加上LANG=zh_CN.UTF-8应该可以解决这个问题。
但是如何加呢?eclipse.ini中有办法加吗?
注意给jvm加上-DLANG=zh_CN.UTF-8是不能解决这个问题的。
...全文
7286 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulv85 2013-10-26
  • 打赏
  • 举报
回复
finder找不到这个目录啊 /Applications/eclipse/Eclipse.app/Contents/Info.plist 请问怎么弄?
liujiboy 2013-09-27
  • 打赏
  • 举报
回复
引用 15 楼 gogo1217 的回复:
试试我的方法:http://gogo1217.iteye.com/blog/1859659
非常感谢,这个问题总算解决了。
xujieli2 2013-05-24
  • 打赏
  • 举报
回复
[quote=引用 15 楼 gogo1217 的回复:] 试试我的方法:http://gogo1217.iteye.com/blog/1859659 经过我的亲自实践,你的方法非常可行,帮了我的大忙,谢谢分享!
JavaScript_R 2013-05-24
  • 打赏
  • 举报
回复
嗯,学习了
刘晨哈 2013-05-04
  • 打赏
  • 举报
回复
试试我的方法:http://gogo1217.iteye.com/blog/1859659
引用 12 楼 gogo1217 的回复:
在 ~/.bash_profile 增加 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 试试看
引用 楼主 liujiboy 的回复:
在Mac OS下遇到了奇怪的乱码问题。 先给一段代码 import java.io.File; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { File file=new File("测试"); System.out.println(file.getCanonicalPath()); } } 这段代码在Mac OS的命令行下执行完全没有问题,能够正确输出中文路径。 切换到eclipse下,如果使用苹果自带的JDK 1.6,也能够正常执行输出正确的中文路径。 但是若是采用SUN的JDK1.7,输出的路径就是乱码了,并且只要是涉及中文路径操作的全部都会出错。 出现这个问题之后,我进行了很多测试。 在Mac OS的命令行下用JDK1.7编译执行上述代码,OK,完全没有问题。 甚至在命令行下启动eclipse然后用jdk1.7编译,仍然能够得到正确的结果。 因此我怀疑是环境变量的问题,于是在eclipse中run configuration里面添加了一个“环境变量”(注意不是jvm的环境变量,而是系统环境变量) LANG=zh_CN.UTF-8 在运行上述程序,一切就正常了。 本来这个问题解决了,但是今天遇到一个新的情况。 那就是如果用jdk1.7运行eclipse,那么eclipse中所有涉及中文文件名的操作全部会失效。 例如创建一个中文目录。 请问有朋友在Mac os下用jdk1.7运行eclipse吗?这个问题如何解决? 我觉得如果能够在eclipse启动时加上LANG=zh_CN.UTF-8应该可以解决这个问题。 但是如何加呢?eclipse.ini中有办法加吗? 注意给jvm加上-DLANG=zh_CN.UTF-8是不能解决这个问题的。
shihongyang 2013-04-28
  • 打赏
  • 举报
回复
MacOS Eclipse 中文文件名乱码问题 现象: 在eclipse中创建的中文文件名都被改成"????" 原因: jdk 1.7 MacOS版本问题 解决方法: 用 jdk 1.6 来启动eclipse jdk下载地址:http://support.apple.com/kb/DL1572 或者到下面的目录看下是否已经存在1.6的jdk 修改/Applications/eclipse/Eclipse.app/Contents/Info.plist 在对应位置加上: <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string> Info.plist 文件注释中有详细说明, 在文件最后部分
zxc123456zxcyyu 2013-04-27
  • 打赏
  • 举报
回复
关注啊,mi很需要啊,就是没有解决方法,希望有大神可以用代码实现
刘晨哈 2013-04-21
  • 打赏
  • 举报
回复
在 ~/.bash_profile 增加 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 试试看
tony19821016 2013-04-19
  • 打赏
  • 举报
回复
引用 楼主 liujiboy 的回复:
在Mac OS下遇到了奇怪的乱码问题。 先给一段代码 import java.io.File; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { File file=new File("测试"……
在eclipse.ini中更换了jvm后好了,用1.6的jvm,貌似jdk1.7就有问题,增加如下 -vm /System/Library/Frameworks/JavaVM.framework
wenmin311 2013-04-15
  • 打赏
  • 举报
回复
我也遇到这个问题,MAC OS 下的JDK1.7 乱码。包括SVN更新之类的,涉及中文的文件夹。 有谁知道怎么解决了吗。
GOLF_R20 2012-12-08
  • 打赏
  • 举报
回复
学习~~
Inhibitory 2012-12-08
  • 打赏
  • 举报
回复
public class Hello {
    public static void main(String[] args) throws IOException {
        System.out.println(System.getProperty("file.encoding"));
    }
}
例如这段代码,在Eclipse中运行输出的结果是 UTF-8,但是在Mac的终端里输出的会是MacRoman
Inhibitory 2012-12-08
  • 打赏
  • 举报
回复
1. 如果一个程序Hello.java使用的是UTF-8源码,也是使用UTF-8的方式编译的(如在Eclipse里设置工程的编码为UTF-8) 而且Mac的终端什么也不配置,就使用默认的,那么下直接运行java Hello,中文部分一定会是乱码,这个时候要使用 java -Dfile.encoding=UTF-8 Hello 中文才会正确显示 2. 还是上面的配置,如果Hello.java是在Mac终端里编译的,然后直接再用Eclipse运行,这时在Eclipse里中文部分也是乱码。 如果要使用UTF-8的方式指定字符集编译,手动时得用 javac -encoding utf-8 Hello.java
Mrdanding 2012-12-08
  • 打赏
  • 举报
回复
。。我也有一样的问题,只要是以前写好的项目导入进来,所有的中文都是乱码,如果有中文路径的话,更惨,只能在mac里面的eclipse自己重新写才行,我也不知道怎么才能导入进来,好桑心啊,希望有高手解答,
di_wq 2012-09-04
  • 打赏
  • 举报
回复
我能想到的解决方案楼主基本都用到了,希望楼主解决后能贴出解决方案,学习了,支持楼主一下
xttxqjfg 2012-09-04
  • 打赏
  • 举报
回复
操作系统对参数编码影响的问题?
liujiboy 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

右键点击项目 -> Properties -> Resource -> Text file encoding -> Other -> UTF-8
[/Quote]
根本就不是这个问题,文件的编码早就是UTF-8了,工程的编码也是。
JANESTAR 2012-08-20
  • 打赏
  • 举报
回复
Properties -> Resource -> Text file encoding -> Other -> UTF-8
AMinfo 2012-08-18
  • 打赏
  • 举报
回复
右键点击项目 -> Properties -> Resource -> Text file encoding -> Other -> UTF-8
杰地桌面应用框架 Desktop Application Framework 对于大多数开发人员来说,做一个小的Swing应用程序很容易。用JFrame和大多数Swing组件都不难。再加上JIDE提供的一些组件,把它们都用在一起也还行。可是,当您的应用程序越来越大时,问题就出现了。您会发现Swing的应用程序无规律可循。比如说,让您做出一个多文档界面,外面根本没有这样的框架可借鉴。从我们多年的经验来看,我们还很少看到小的Swing项目。这也不奇怪。事实上,很多企业在选择用Swing时,都是因为项目很大。感觉上Swing就是要么不做,要是做的话,Swing的项目一定是大项目。不过问题就出在这。大项目,如果没有规律可循,实在有点让人不放心。 我们当然也注意到这个问题,所以才引进了这样一个桌面应用程序框架。 和网页方面的开发不一样,桌面软件开发没有什么优秀的架构。一方面,您们应该听说过JSR 296。它提供一个非常简单的框架。不幸的是这个项目随着Hans Muller这个最初的作者离开Sun之后,基本上处在一个半死不活的状态。另外一方面,我们有Eclipse和NetBeans中两个RCP平台。您要是用过这两个平台,您就会发现它们怎么这么复杂。也不怪它们。它们最初都是Java IDE方面应用程序的底层,经过多年的改动和调整,才形成目前的RCP平台,所以或多或少还有一些拼凑的成分在里面。所以我们还是需要一个平台。它要强大但是灵活,可以支持跨平台应用程序,不像JSR 296。与此同时,它还要易于使用和维护,不像那两个RCP平台。 我们很高兴地推出杰地桌面应用框架 Desktop Application Framework (简称JDAF)!JDAF 是有史以来第一个跨平台的应用程序平台。为什么这么说呢?难道Swing不是吗?Swing的确可以在各个平台上运行,可是区别就在它仅仅是可以运行,而不能和平台完美结合。只有JDAF才可能让您写一次代码,产生的应用程序,不但是可以运行,还可以符合各个平台的界面设计要求。 JDAF 基于一个强大的“Managed Application”的技术,意思就是应用程序的生命周期都在我们这个平台的管理之下。它还提供了很多现成的功能,让您随时可以用。比如,Model-View-Controller 架构下的data-view的管理。比如,符合各个平台界面设计标准的标准对话框、菜单、工具栏、图标等等。再比如,打印和帮助集成,还有一个产生console类型应用程序的框架。所有这些都让JDAF成为最强大最易用的桌面应用程序开发平台。 主要功能 "Managed Desktop Application" - facilitates the entire application lifecycle OS Guidelines-driven Application UI - Supports Java Cross Platform, Linux/Gnome, Mac OS X, Windows XP Model-View-Controller Architecture - data and view management GUI and Console Application Support - or extend to make your own application types Integration with JIDE Docking Framework, Action Framework, and other components Robust File-Handling - unprecedented file-based application support Polymorphic Resource Binding - bind resource bundles to objects automatically ObjectFormat - powerful MessageFormat replacement makes localization easier Command Line Parsing - capture, parse, convert and type check command line arguments Environment Variables - capture and access environment variables, single 1.4.2+ solution FileFormat API marshals data to/from application - default support for common formats Map file formats to data views Robust implementation of platform-dependant, application-specific file system checks 20+ file-related OS-specific standard dialogs such as save alerts and file replace Recent Documents menu with native path formatting Printing Integration - compatible integration of the Java Printing API Help Integration - snap-in integration of your existing help system Open files from the command line Comprehensive JavaDoc and Developer Guide, including migration guide Optional JSR-296 Compatibility API JDAF Wizard - code generation wizard gets you going quickly Desktop Application UI (按照 OS 界面设计指南) Standard Windows - automatic windowing harness manages UI, emulates native document windowing behavior such as titling semantics, dirty status, and dialog interaction Supports SDI, MDI, TDI, Split, Docking, and mixed windowing styles Standard Icons - platform icons for Actions, including large icon support Standard Menus - Fully functional implementations of File, Edit, Window, and Help menus Standard Toolbars - Fully functional implementations of standard toolbars Standard Dialogs - Organizes dialogs and provides highest-fidelity and integration features Unique OS behavior such as automatic Mac OS X system integration, Windows XP MDI and arrange commands, Linux document age in dialogs, and much more... 一些重要的类 DesktopApplication - root class serves as the controller and center of your application GUIApplication - OS Guidelines-driven GUI application with managed UI FileBasedApplication - direct support for document-centric applications ConsoleApplication - direct support for console applications (Yes, and MVC console application!) ApplicationLifecycleListener - listen to application lifecyle events DataModel/DataModelFactory/DataModelListener - create and manage datspan and datspan lifecycle DataView/DataViewFactory/DataViewListener - create and manage views and view lifecycle ApplicationFeature - create reusable, cross-cutting application features ApplicationAction - Create application-related Actions. Over 30 standard Actions installed and pre-wired MenubarCustomizer - Modify the standard menus and create your application-specific menus ToolBarCustomizer - Modify the standard toolbar and create your application-specific toolbars DialogRequest/DialogResponse/DialogListener - Request/response model for dialogs that facilitate native fidelity, dialog caching, and lifecycle Resources - read and convert resource values, bind resources to objects

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧