Здравствуйте и спасибо заранее за любую помощь.
Во-первых, я знаю, что другие люди уже сталкивались с этой проблемой, и я пробовал решения во всех их обсуждениях, и никто из них не работал для меня.
По сути, я пытаюсь настроить «сборку gradle» в папке проекта для проекта java eclipse, чтобы я мог начать кодировать агента. У меня возникает проблема с получением программой распознавания byteBuddy, которая уже находится в моей папке lib и добавлена в мои зависимости в моем файле gradle.
Я впервые работаю с gradle и byteBuddy.
Когда я пытаюсь построить сборку в папке проекта, он говорит следующее:
Не удалось выполнить исключение для задачи ': compileJava'.
Когда я использую --info, он предоставил мне более подробную информацию, сказав:
Все входные файлы устарели для добавочной задачи ': compileJava'. Требуется полная перекомпиляция, поскольку информация о дополнительных изменениях недоступна.
Продолжает говорить:
.... путь .... java \ main.java: 4: ошибка: пакет net.bytebuddy.agent не существует
import net.bytebuddy.agent.ByteBuddyAgent;
Я провел множество исследований этой проблемы и видел, что это может быть как несовпадение версий java с gradle, неверные настройки JAVA_HOME, и почему программа не берет jar-файлы, которые явно находятся в моем библиотека.
Я не знаю, связана ли моя проблема с вышеупомянутым, но я еще не нашел других потенциальных проблем, связанных с моей проблемой.
Я использую:
Затмение Java,
Java 1.8.0_212 (мой JAVA_HOME настроен на это),
Gradle-5.4.1,
библиотека byteBuddy 1.2.12,
библиотека asm-7.1 (которая, как говорят, необходима для запуска byteBuddy), и
библиотека jackcess 2.1.11 (я не уверен, что это связано с проблемой, но она возникла в сборке gradle до того, как я попробовал bytebuddy с той же проблемой)
РЕДАКТИРОВАТЬ: Я использую Windows 7 Professional
Вот мой основной файл, который упоминался в сообщении об ошибке выше. В приведенном выше коде я пытаюсь заставить закомментированную область работать, но Eclipse не распознает импорт ByteBuddy:
import javax.swing.JFrame;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.agent.ByteBuddyAgent;
import net.bytebuddy.implementation.FixedValue;
import net.bytebuddy.matcher.ElementMatchers;
public class main
{
public static void main(String[] args)
{
mainFrame newBegining = new mainFrame();
newBegining.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
newBegining.setLocationRelativeTo(null);
newBegining.setVisible(true);
}
/*Class<?> dynamicType = new ByteBuddy()
.subclass(Object.class)
.method(ElementMatchers.named("toString"))
.intercept(FixedValue.value("Hello World!"))
.make()
.load(getClass().getClassLoader())
.getLoaded();
assertThat(dynamicType.newInstance().toString(), is("Hello World!"));*/
}
Вот соответствующие фрагменты из моего файла Gradle ниже (я думаю, что они могут быть основаны на том, что я редактировал их в попытке исправить проблему, и они были упомянуты в других потенциальных решениях):
repositories {
jcenter()
flatDir { dirs 'lib' }
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'joda-time:joda-time:2.1'
compile 'net.bytebuddy:byte-buddy:1.9.12'
testCompile 'junit:junit:4.12'
}
compileJava {
options.debug = true
}
jar {
manifest {
attributes(
'Main-Class': 'main',
'Premain-Class': 'searchAgent.searchAgent',
'Agent-Class': 'searchAgent.searchAgent',
'Can-Redefine-Classes': 'true',
'Can-Retransform-Classes': 'true',
)
from configurations.runtime.collect { zipTree(it) }
}
Насколько я понимаю, я думаю, что проблема связана со способностью gradle распознавать мою библиотеку byteBuddy, но я не совсем уверен.
Мне кажется, что ответ - что-то маленькое, но я не смог его закрепить.