#java #cobertura
#java #cobertura
Вопрос:
Мы установили версию наших приложений (без каких-либо инструментов или cobertura jar, включенных перед созданием пакетов приложений).
После установки мы инструментировали весь jar с помощью cobertura и включили файл jar cobertura в java classpath. но при запуске приложения оно выдает ошибку ниже.
любой ввод действительно поможет, спасибо.
Версия Java «1.7.0_25»
версия cobertura 1.9.4.1
Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.HasBeenInstrumented
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 13 more
Комментарии:
1. Как вы включаете Cobertura в путь к классу? Делает net/sourceforge/cobertura/coveragedata/HasBeenInstrumented.class существует в файле JAR, который вы включаете в путь к классу?
Ответ №1:
Вы должны добавить cobetura.jar для начальной загрузки классов с помощью -Xbootclasspath . Дополнительная информация: https://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html Это необходимо сделать для того, чтобы загрузить классы cobetura, которые необходимы для загрузки ваших классов приложений.
Ответ №2:
Я смог избавиться от этой проблемы, запустив цель позднего пакета, поскольку он повторно компилирует и повторно упаковывает код без Cobertura.
Цели, которые я использую, следующие:
clean site package