Подтвердить что ты не робот

Как вы рассматриваете проблему отсутствия tools.jar в JDK в Mac OS X?

В моем поиске я нашел вспомогательную информацию здесь: Руководство по разработке Java для Mac OS X

tools.jar не существует. Классы, обычно расположенные здесь, вместо этого включены в classes.jar. Сценарии, которые полагаются на существование tools.jar, должны быть переписаны соответствующим образом.

Если переписывание неизбежно, как это происходит?

Эта проблема возникла при развертывании на Tomcat 6, установленном через MacPorts на машине Mac OS X 10.6.

4b9b3361

Ответ 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: копировать. Возможно, вам будет легче, но не забудьте об обновлениях, возможно.

Ответ 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