Получение Classnotfoundexception: недоступно или не распознано Attach API: com.sun.tools.attach.VirtualMachine - PullRequest
1 голос
/ 12 марта 2012

Я делаю проверку концепции для репликации Ehcache-RMI.

Я использую 2 ноутбука, на обоих работает терракотовый сервер. (И оба находятся в одной сети). ehcache.xml настроен для автоматического обнаружения одноранговых узлов с использованием многоадресного IP.

Оба имеют отдельную Java-программу.

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

13 Mar, 2012 12:12:15 AM net.sf.ehcache.pool.sizeof.AgentLoader <clinit>
INFO: Unavailable or unrecognised attach API : java.lang.ClassNotFoundException: com.sun.tools.attach.VirtualMachine
13 Mar, 2012 12:12:15 AM net.sf.ehcache.pool.sizeof.JvmInformation <clinit>
INFO: Detected JVM data model settings of: 32-Bit HotSpot JVM

Но на другом ноутбуке это выглядит просто идеально. Его поговорка

Mar 13, 2012 12:07:31 AM net.sf.ehcache.pool.sizeof.AgentLoader$1 run
INFO: Located valid 'tools.jar' at 'C:\Program Files\Java\jdk1.6.0_24\jre\..\lib\tools.jar'

Я действительно застрял ..

Может кто-нибудь помочь!

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Как видите, это только информация.По сути, Ehcache будет пытаться загрузить агент, который он упаковывает, в свой собственный jar, чтобы выполнить измерения размера объекта.Ehcache поставляется с 3-мя связанными реализациями SizeOfEngine: основанной на отражении, небезопасной и агентной.Он попытается загрузить их с последнего на первый (в обратном порядке).По-видимому, вы используете разные JDK / VM на этих двух машинах.Агент один может быть загружен только в том случае, если вы используете JDK 1.6 и можете найти API присоединения (не на пути к классам на всех платформах, но тем не менее он пытается найти jar).Похоже, что по какой-то причине это не сработало.На самом деле нет причин, по которым вы должны что-то делать с этим ... Если вы действительно хотите использовать агент (и, следовательно, ему придется подключиться к виртуальной машине), вам нужно либо убедиться, что вы используете JDK 1.6, либоизвлеките jar агента из jar ehcache и объявите агента при запуске виртуальной машины.

Теперь, если вы используете JDK 1.6 на этом компьютере, я хотел бы узнать подробности (ОС, версия, расположение tools.jar в установке JDK) и посмотреть, пропустили ли мыугловой шкаф как-то ...

0 голосов
/ 08 января 2015

Решение состоит в том, чтобы просто использовать подход java -classpath и загрузить две библиотеки, а затем выполнить программу HotThread:

java -classpath "/opt/jdk1.6/lib/tools.jar:/home/samba/HotThread.jar" hotthread.Main 3223

Ref: Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...