Java NoClassDefFoundError - PullRequest
       16

Java NoClassDefFoundError

0 голосов
/ 20 января 2011

Я работаю в "biggish" проекте Maven / Java и не могу понять, какую ошибку я получаю при запуске приложения (оно компилируется нормально). Код ошибки, который я получаю:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.management.OperatingSystem
  at com.sun.management.OSMBeanFactory.getOperatingSystemMXBean(OSMBeanFactory.java:30)
        at sun.management.ManagementFactory.getOperatingSystemMXBean(ManagementFactory.java:100)
        at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:308)
        at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
        at com.sun.xml.internal.ws.server.JMXAgent.<init>(JMXAgent.java:49)
        at com.sun.xml.internal.ws.server.JMXAgent.getDefault(JMXAgent.java:77)
        at com.sun.xml.internal.ws.server.WSEndpointImpl.<clinit>(WSEndpointImpl.java:84)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)

Судя по всему, виртуальная машина не находит класс "com.sun.management.OperatingSystem", но после поиска в поиске я не могу найти, где этот класс должен находиться.

Есть подсказки?

РЕДАКТИРОВАНИЕ: Запуск с JRE JDK 1.6.0_18 (JAVA_HOME = C: \ Program Files \ Java \ jdk1.6.0_18)

Ответы [ 3 ]

1 голос
/ 20 января 2011

Это может быть не причиной вашей проблемы, но ошибки, подобные той, которую вы видите, иногда могут возникать, когда JDK хранится в «Program Files». Java не любит пробелы в пути к файловой системе.

0 голосов
/ 20 января 2011

Глядя на javadocs для Java 6 и 7, кажется, что OSMBeanFactory (который находится в вашей трассировке стека) был добавлен в 7.

Интерфейс мониторинга и управления для платформы Java ™ (6)

Интерфейс мониторинга и управления для платформы Java ™ ПРОЕКТ ea-b120 (7)

0 голосов
/ 20 января 2011

com.sun.management - это недокументированный Java-пакет. Класс OperatingSystem является реализацией для OperatingSystemMXBean. Если вы загрузите код Javasource, вы сможете увидеть там класс.

Что касается расположения этого файла, он должен быть в вашем стандартном пакете JRE. Убедитесь, что ваше приложение указывает на правильную JRE. В Java 5/6 класс можно найти в файле rt.jar.

Если вы хотите подтвердить наличие файла, откройте банку в программе, например JD-Gui , и осмотрите банку для подтверждения.

...