Как вы рассматриваете проблему отсутствия tools.jar в JDK в Mac OS X?
В моем поиске я нашел вспомогательную информацию здесь: Руководство по разработке Java для Mac OS X
tools.jar
не существует. Классы, обычно расположенные здесь, вместо этого включены в classes.jar
. Сценарии, которые полагаются на существование tools.jar
, должны быть переписаны соответствующим образом.
Если переписывание неизбежно, как это происходит?
Эта проблема возникла при развертывании на Tomcat 6, установленном через MacPorts на машине Mac OS X 10.6.
Ответы
Ответ 1
Вот мое протестированное решение, которое не подразумевает изменения конфигурации maven, просто добавьте символические ссылки:
- ln -s/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home/../Classes/classes.jar
/Library/Java/JavaVirtualMachines/ 1.6.0_38-b04-436.jdk/Contents/Home/../Классы/tools.jar
- ln -s/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home/../Classes
/Library/Java/JavaVirtualMachines/ 1.6.0_38-b04-436.jdk/Contents/Home/../Lib
Наслаждайтесь!
Бруно
Ответ 2
Это похоже на ответ Бруно выше; однако я не большой поклонник символической ссылки на абсолютный путь. Вот как я обрабатываю символические ссылки:
cd /Library/Java/JavaVirtualMachines/<jdk version>/Contents/Home
sudo ln -s lib Classes
cd lib/
sudo ln -s tools.jar classes.jar
Это упрощает, а затем символизирует абсолютные пути.
Ответ 3
Ну, вы ищете "tools.jar", например, с помощью grep. Если место, где class.jar, где tools.jar ожидалось, вы могли бы просто изменить слово.
Другая идея заключается в создании символической ссылки из classes.jar на tools.jar, если у вас достаточно привилегий, и файловая система на MacOS поддерживает это. Else: копировать. Возможно, вам будет легче, но не забудьте об обновлениях, возможно.
Ответ 4
Вместо того, чтобы использовать Tomcat из Macports, загрузите Tomcat из Apache.
6.0: http://tomcat.apache.org/download-60.cgi
7.0: http://tomcat.apache.org/download-70.cgi
Ответ 5
Отредактируйте ответ Бруно, который, наконец, помог мне после нескольких ошибок и ошибок maven.
Если вы используете 1.7, вы можете изменить версию до 1.7. Я не знаю, все еще проблема в Java 1.7.
sudo sh -c '$(j_home=$(/usr/libexec/java_home -v 1.6) && ln -sf ${j_home}/../Classes/classes.jar ${j_home}/../Classes/tools.jar && ln -sf ${j_home}/../Classes ${j_home}/../lib)'
Ответ 6
Я столкнулся с той же проблемой и решил ее по-другому.
- Сначала проверьте, что java_home установлен как
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
и не
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
-
Добавьте плагин cobertura, убедитесь, что systemPath
правильно отредактировал местоположение classes.jar
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${java_home}/Classes/classes.jar</systemPath>
</dependency>
</dependencies>
</plugin>
-
Добавьте инструменты зависимостей и исключений
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
</exclusion>
</exclusions>
</dependency>
-
Наконец, добавьте следующие профили
<profiles>
<profile>
<id>standard-jdk</id>
<activation>
<file>
<exists>${java_home}/Home/lib/tools.jar</exists>
</file>
</activation>
<properties>
<tools-jar>${java_home}/Home/lib/tools.jar</tools-jar>
</properties>
</profile>
<profile>
<id>apple-jdk</id>
<activation>
<file>
<exists>${java_home}/Classes/classes.jar</exists>
</file>
</activation>
<properties>
<tools-jar>${java_home}/Classes/classes.jar</tools-jar>
</properties>
</profile>
Теперь запустите maven и он должен успешно сгенерировать отчеты Cobertura!
Ответ 7
Невозможно найти ссылки на него в interweb, но теперь у моих Mac 1.7 и 1.8 jdk есть tools.jar.
/Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk 1.7.0_51.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk 1.7.0_60.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk 1.7.0_79.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk 1.8.0_51.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk 1.8.0_92.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/ 1.6.0.jdk/Contents/Classes/classes.jar
classes.jar присутствует только в mac 1.6 jdk.
- Erik