На прошлой неделе я просмотрел статью и увидел вебинар по Java 7 . Сначала я думал, что Java 7 была выпущена, но вскоре понял, что это Preview для разработчиков . К сожалению, страница загрузки не поддерживает OS X. Поскольку мне потребовалось немного усилий, чтобы выяснить, как установить OpenJDK 7 на OS X (я использую Snow Leopard 10.6.7), я решил, что запишите, как я это сделал.
Я начал с загрузки «OpenJDK 1.7 universal (32/64 bit) из ветки Mac OS / X» из загрузок проекта openjdk-osx-build ( прямая ссылка ). После загрузки я установил DMG как обычно.
Я не использую настройки Java для установки JDK, вместо этого я использую удобный сценарий Давида Блевина setjdk . Чтобы этот скрипт работал с JDK 7 в OS X, мне пришлось сделать одно небольшое изменение. В строке 40 я добавил «Contents» к пути для JAVA_HOME:
export JAVA_HOME=$vmdir/$ver/Contents/Home
Оттуда мне пришлось настроить несколько символических ссылок, чтобы все работало как положено:
cd /System/Library/Java/JavaVirtualMachines/ sudo ln -s /Library/Java/JavaVirtualMachines/1.7.0.jdk
Наконец, мой JAVA_HOME был установлен в «/System/Library/Frameworks/JavaVM.framework/Home». Мне нравится более короткое (и, казалось бы, более распространенное) «/ Library / Java / Home», поэтому я установил его обратно в моем ~ / .profile:
export JAVA_HOME=/Library/Java/Home
В моей системе / Library / Java / Home была символическая ссылка на /System/Library/Frameworks/JavaVM.framework/Home, поэтому я изменил ее на CurrentJDK, который используют Java Preferences и setjdk.
cd /Library/Java rm Home ln -s /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Contents/Home
Затем мне пришлось добавить символическую ссылку для 1.7 в каталоге версий.
cd /System/Library/Frameworks/JavaVM.framework/Versions sudo ln -s /System/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents 1.7
После внесения этих изменений я смог легко перейти на JDK 7.
$ setjdk 1.7 Setting this terminal's JDK to 1.7 ... openjdk version "1.7.0-internal" OpenJDK Runtime Environment (build 1.7.0-internal-b00) OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)
Я также смог переключиться обратно на JDK 6.
$ setjdk 1.6 Setting this terminal's JDK to 1.6 ... java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
Проблемы с Maven
Далее я попытался использовать JDK 7 для сборки AppFuse . Я столкнулся с двумя проблемами, когда я попытался сделать это. Первый был вызван плагином native2ascii, который, как известно, вызывал проблемы на не-Mac платформах. Добавление следующего профиля, похоже, решило проблему.
<profile> <activation> <jdk>1.7</jdk> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>native2ascii-maven-plugin</artifactId> <dependencies> <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.7.0</version> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency> </dependencies> </plugin> </plugins> </build> </profile>
Следующая проблема была с Enunciate и его maven-enunciate-cxf-plugin.
[INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] com/sun/mirror/apt/AnnotationProcessorFactory com.sun.mirror.apt.AnnotationProcessorFactory [INFO] ------------------------------------------------------------------------ [INFO] Trace java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory
Казалось, что добавление профиля, который включает tools.jar, решит эту проблему, но это не так . Когда я добавляю зависимость непосредственно в сам плагин, я получаю следующую ошибку:
warning: The apt tool and its associated API are planned to be removed in the next major JDK release. These features have been superseded by javac and the standardized annotation processing API, javax.annotation.processing and javax.lang.model. Users are recommended to migrate to the annotation processing features of javac; see the javac man page for more information. [WARNING] Validation result has errors. error: [core] java.lang.StackTraceElement: A TypeDefinition must have a public no-arg constructor or be annotated with a factory method. 1 error [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------
Надеюсь, эта статья поможет вам начать работу с Java 7 на OS X. Если у вас есть какие-либо дополнительные советы, пожалуйста, оставьте комментарий.
От http://raibledesigns.com/rd/entry/install_openjdk_7_on_os