Статьи

Установка OpenJDK 7 на OS X

На прошлой неделе я просмотрел статью и увидел вебинар по 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