Как вы решаете проблему отсутствующего tools.jar в JDK в Mac OS X? - PullRequest
13 голосов
/ 11 апреля 2011

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

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

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

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

Ответы [ 7 ]

8 голосов
/ 25 января 2013

Вот мое проверенное решение, которое не подразумевает никаких изменений в конфигурации 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/../Classes/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

Наслаждайтесь! Bruno

4 голосов
/ 27 мая 2016

Это похоже на ответ Бруно выше; однако я не большой поклонник символической ссылки на абсолютный путь. Вот как я работаю с символическими ссылками:

cd /Library/Java/JavaVirtualMachines/<jdk version>/Contents/Home
sudo ln -s lib Classes

cd lib/
sudo ln -s tools.jar classes.jar

Это облегчает создание ссылок на абсолютные пути.

1 голос
/ 11 апреля 2011

Вместо использования Tomcat из Macports загрузите Tomcat из Apache.

6.0: http://tomcat.apache.org/download-60.cgi

7.0: http://tomcat.apache.org/download-70.cgi

1 голос
/ 11 апреля 2011

Ну, вы ищете 'tools.jar', например, с grep. Если место, где находится classes.jar, где ожидался tools.jar, вы можете просто изменить слово.

Другая идея состоит в том, чтобы создать символическую ссылку из classes.jar на tools.jar, если у вас достаточно привилегий и файловая система в MacOS поддерживает это. Остальное: копия. Может быть, проще, но не стоит забывать об обновлениях, может быть.

0 голосов
/ 14 декабря 2016

Не могу найти ссылки на него в сети, но на моем Mac 1.7 и 1.8 jdk теперь есть tools.jar.

/ Library / Java / JavaVirtualMachines / jdk1.7.0_12.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.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

0 голосов
/ 17 ноября 2013

Я столкнулся с той же проблемой и решил ее по-разному.

  • Сначала убедитесь, что 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!

0 голосов
/ 03 июня 2013

Отредактируйте ответ Бруно, который, наконец, сработал для меня после долгих проб и ошибок 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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...