添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
I'm trying to make my first plugin, using Eclipse and following the tutorial on the Bukkit wiki. The coding part went fine for me but the plugin won't build. My pom.xml mostly follows the tutorial but I've altered it a bit: it uses Spigot instead of Bukkit, and different versions for Minecraft, Java, and the Maven compiler plugin. The only error I've ever gotten is java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess , which I tried to look into, found out it's got something to do with Guava (which I know nothing about), so added a dependency from this link which claims to fix it, but still get the same problem.
Here's the pom.xml:
HTML:
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0 < / modelVersion>
<groupId> io.github.noteenoughbees < / groupId>
<artifactId> Plugin1 < / artifactId>
<version> 0.0.1-SNAPSHOT < / version>
<properties>
<java.version> 17 < / java.version>
<spigot.version> 1.19-R0.1-SNAPSHOT < / spigot.version> <!-- versions list: https://hub.spigotmc.org/nexus/#nexus-search;gav~org.spigotmc~spigot-api~~jar~~kw,versionexpand -->
< / properties>
<repositories>
<!-- tell Eclipse where Spigot's repo is located -->
<repository>
<id> spigot-repo < / id>
<url> https://hub.spigotmc.org/nexus/content/repositories/snapshots < / url>
< / repository>
< / repositories>
<dependencies>
<!-- tell Eclipse we are building against Spigot -->
<dependency>
<groupId> org.spigotmc < / groupId>
<artifactId> spigot-api < / artifactId>
<version> ${spigot.version} < / version> <!--change this value depending on the version or use LATEST-->
<scope> compile < / scope>
< / dependency>
<dependency>
<groupId> com.google.guava < / groupId>
<artifactId> failureaccess < / artifactId>
<version> 1.0.1 < / version>
< / dependency>
< / dependencies>
<build>
<defaultGoal> clean package < / defaultGoal>
<plugins>
<!-- how to format Maven Java compiler code for Java 1.9+: https://jenkov.com/tutorials/maven/java-compiler.html -->
<plugin>
<groupId> org.apache.maven.plugins < / groupId>
<artifactId> maven-compiler-plugin < / artifactId>
<version> 3.8.1 < / version>
<configuration>
<release> ${java.version} < / release>
< / configuration>
< / plugin>
< / plugins>
< / build>
< / project>
The error:
Code (Text):
---------------------------------------------------
constituent[0]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/
constituent[1]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-core-3.8.4.jar
constituent[2]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-model-3.8.4.jar
constituent[3]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-settings-3.8.4.jar
constituent[4]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-settings-builder-3.8.4.jar
constituent[5]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-builder-support-3.8.4.jar
constituent[6]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-repository-metadata-3.8.4.jar
constituent[7]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-artifact-3.8.4.jar
constituent[8]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-plugin-api-3.8.4.jar
constituent[9]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-model-builder-3.8.4.jar
constituent[10]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-provider-3.8.4.jar
constituent[11]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-api-1.6.3.jar
constituent[12]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-spi-1.6.3.jar
constituent[13]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-util-1.6.3.jar
constituent[14]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-shared-utils-3.3.4.jar
constituent[15]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/commons-io-2.6.jar
constituent[16]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/org.eclipse.sisu.inject-0.3.5.jar
constituent[17]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/guice-4.2.2-no_aop.jar
constituent[18]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/plexus-utils-3.3.0.jar
constituent[19]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/plexus-interpolation-1.26.jar
constituent[20]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/plexus-component-annotations-2.1.0.jar
constituent[21]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/commons-lang3-3.8.1.jar
constituent[22]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-embedder-3.8.4.jar
constituent[23]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/javax.annotation-api-1.2.jar
constituent[24]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/plexus-sec-dispatcher-2.0.jar
constituent[25]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/plexus-cipher-2.0.jar
constituent[26]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/commons-cli-1.4.jar
constituent[27]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-compat-3.8.4.jar
constituent[28]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/wagon-provider-api-3.4.3.jar
constituent[29]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/org.eclipse.sisu.plexus-0.3.5.jar
constituent[30]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/aether-connector-okhttp-0.17.8.jar
constituent[31]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/okhttp-3.14.1.jar
constituent[32]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/okio-1.17.3.jar
constituent[33]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-impl-1.6.3.jar
constituent[34]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-connector-basic-1.6.3.jar
constituent[35]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/maven-resolver-transport-wagon-1.6.3.jar
constituent[36]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/wagon-file-3.4.3.jar
constituent[37]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.18.3.20220227-1319/jars/jansi-2.4.0.jar
constituent[38]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.18.1.20211008-0657/
constituent[39]: file:/C:/Program%20Files%20(x86)/eclipse/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.18.1.20211008-0657/jars/slf4j-simple-1.7.30.jar
constituent[40]: file:/C:/Program%20Files%20(x86)/eclipse/configuration/org.eclipse.osgi/1352/0/.cp/
constituent[41]: file:/C:/Program%20Files%20(x86)/eclipse/configuration/org.eclipse.osgi/435/0/.cp/
constituent[42]: file:/C:/Program%20Files%20(x86)/eclipse/configuration/org.eclipse.osgi/1398/0/.cp/
---------------------------------------------------
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3476)
at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3480)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2138)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4956)
at com.google.inject.internal.Annotations$AnnotationChecker.hasAnnotations(Annotations.java:274)
at com.google.inject.internal.Annotations.isBindingAnnotation(Annotations.java:340)
at com.google.inject.Key.ensureIsBindingAnnotation(Key.java:349)
at com.google.inject.Key.strategyFor(Key.java:336)
at com.google.inject.Key.get(Key.java:219)
at org.eclipse.sisu.wire.ParameterKeys.<clinit>(ParameterKeys.java:28)
at org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:93)
at org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:104)
at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:344)
at com.google.inject.spi.Elements.getElements(Elements.java:103)
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:137)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
at com.google.inject.Guice.createInjector(Guice.java:87)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481)
at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206)
at org.apache.maven.cli.MavenCli.container(MavenCli.java:651)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.internal.InternalFutureFailureAccess
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 76 more
And the project file structure:
I've been googling this whole thing for 2 days and have no idea what to do anymore :') I haven't used Maven before. Thanks in advance so u can use the libraries to develop, but they dont automatically come with your program. you have to specify to maven that you want them to be added using the maven shade plugin. theres a billion guides out there on how to do that. you would do this for any library that isn't int he runtime environment (being the spigot server). the spigot api is obviously in this environment already, so your plugin doesn't need it too, but you do need your google library you're trying to use I tried a little of both suggestions, then found out the plugin actually does build when using the commandline, just not in Eclipse. I found out Eclipse was only using Maven version 4.8.4 while the commandline used 4.8.6, so once I updated Eclipse's Maven to 4.8.6, it actually worked, the plugin now builds :)
Code (Text):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.noteenoughbees</groupId>
<artifactId>Plugin1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>17</java.version>
<spigot.version>1.19-R0.1-SNAPSHOT</spigot.version> <!-- versions list: https://hub.spigotmc.org/nexus/#nexus-search;gav~org.spigotmc~spigot-api~~jar~~kw,versionexpand -->
</properties>
<repositories>
<!-- tell Eclipse where Spigot's repo is located -->
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url>
</repository>
</repositories>
<dependencies>
<!-- tell Eclipse we are building against Spigot -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>${spigot.version}</version> <!--change this value depending on the version or use LATEST-->
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<!-- how to format Maven Java compiler code for Java 1.9+: https://jenkov.com/tutorials/maven/java-compiler.html -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
</plugins>
</build>
</project>
Marking as solved now