您好,谢谢您的帮助。
首先,我确实知道其他人以前也遇到过这个问题,并且我在所有讨论中都尝试过解决方案,但没有一个对我有用。
基本上,我正在尝试在java eclipse项目的项目文件夹中设置“ gradle build”,以便可以开始编写代理代码。我在获取程序以识别byteBuddy的过程中遇到问题,该程序已经在我的lib文件夹中,并添加到我的gradle文件中的依赖项中。
这是我第一次使用gradle和byteBuddy。
当我尝试在项目文件夹中构建时,它说:
任务':compileJava'的执行失败。
当我使用--info时,它通过以下方式为我提供了更多详细信息:
增量输入':compileJava'的所有输入文件都已过期。由于没有可用的增量更改信息,因此需要完全重新编译。
它说:
.... path .... java \ main.java:4:错误:包net.bytebuddy.agent不存在 导入net.bytebuddy.agent.ByteBuddyAgent;
我已经对该问题进行了大量研究,并且看到了一些问题,例如Java版本与gradle不匹配,错误的JAVA_HOME设置以及为什么程序无法拾取我明显存在的jars库。
我不知道我的问题是否与上述问题有关,但我尚未发现与我的问题有关的其他潜在问题。
我正在使用: Java eclipse, Java 1.8.0_212(我的JAVA_HOME设置为此), gradle-5.4.1, byteBuddy 1.2.12库, asm-7.1库(据说需要它来运行byteBuddy),以及 jackcess 2.1.11库(我不确定与该问题有关,但是它在我尝试使用同一问题的bytebuddy之前出现在了gradle构建中)
编辑:我正在运行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库的能力有关,但我不确定。
我觉得答案很小,但是我无法固定它。