我一直在用Java编写自己的小项目,最近,我编译了它并收到了这个错误:
线程"main"中的异常java.lang.IllegalAccessError:超类访问检查失败:类kröw.zeale.v1.program.core.DataManager$ ConstructList(在未命名模块@ 0x4563e9ab中)无法访问类com.sun.javafx.collections.ObservableListWrapper (在模块javafx.base中)因为模块javafx.base没有将com.sun.javafx.collections导出到未命名的模块@ 0x4563e9ab
所以,我目前有三个不同的类,都在同一个包中.我的层次结构如下:
• Kröw
• DataManager
? ConstructList
Run Code Online (Sandbox Code Playgroud)
在我的程序的早期版本中,我的层次结构是这样的:
• Kröw
? DataManager
- ConstructList
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,ConstructList延长com.sun.javafx.collections.ObservableListWrapper<Construct>.(我不认为Construct这里的班级是必要的,我宁愿不展示它,但如果需要,我可以.)
无论如何,现在,我的IDE可以按预期运行应用程序,但是,当我导出它时,上面的例外是给我的.
完整堆栈跟踪:
Exception in thread "main" java.lang.IllegalAccessError: superclass access check failed: class kröw.zeale.v1.program.core.DataManager$ConstructList (in unnamed module @0x4563e9ab) cannot access class com.sun.javafx.collections.ObservableListWrapper (in module javafx.base) because module javafx.base does not export com.sun.javafx.collections to unnamed module @0x4563e9ab
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown …Run Code Online (Sandbox Code Playgroud) JDK9将(可能)引入一个模块系统.作为其中的一部分,Java类库将被模块化.
当找不到类时,这会导致异常,因为它们位于未指定为依赖项的模块中.
将使用模块系统创建哪些模块以及它们各自的内容是什么?
或者说不同:给定一个没有加载的类,我如何找到适当的模块作为依赖项?
我需要连接到编程方式使用(如果有必要在运行时加载剂)附加API JMX剂如实例这里.这在Java 8中运行良好,但在Java 9中不起作用,因为lib文件夹中不再有management-agent.jar:
String agent = vm.getSystemProperties().getProperty("java.home") +
File.separator + "lib" + File.separator + "management-agent.jar";
Run Code Online (Sandbox Code Playgroud)
能否请您在Java 9中建议什么是正确的方法?
在此先感谢,瓦迪姆
我安装了Spring Tool Suite(版本3.9.0).它以前工作得很好.安装JDK 9后,我无法启动Spring Tool Suite.
我可以在错误日志中看到以下内容:
java.lang.NoClassDefFoundError:org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450)中的javax/annotation/PreDestroy atg.eclipse.e4.core.internal.di.Requestor.disposed (Requestor.java:156)org.eclipse.e4.core.internal.contexts.ContextObjectSupplier $ ContextInjectionListener.update(ContextObjectSupplier.java:78)at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt) .java:111)org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178 )org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:99)at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:141) )在org.eclipse.osgi.framework.eventmgr.EventM的org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)anger.dispatchEvent(EventManager.java:230)org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java: 213)位于org.eclipse.osgi的org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) .internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168)atg.eclipse.osgi.container.Module.publishEvent(Module.java:476)org.eclipse.osgi.container.Module.doStop(Module.java) :634)org.eclipse.osgi.container.Module.stop(Module.java:498)org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)org.eclipse.osgi.internal.在java.base/java中的framework.EquinoxBundle $ SystemBundle $ EquinoxSystemModule $ 1.run(EquinoxBundle.java:165).lang.Thread.run(Thread.java:844)引起:java.lang.ClassNotFoundException:org.eclipse中的org.eclipse.e4.core.di_1.6.100.v20170421-1418找不到javax.annotation.PreDestroy. osg.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433)位于org.eclipse.osgi.BongleLoader.findClass(BundleLoader.java:395)的org.eclipse.osgi.internal.loader.BundleLoader. findClass(BundleLoader.java:387)位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)的org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
这个问题真的是因为JDK 9吗?请指出我正确的方向来解决问题.
谢谢.
我遵循统一的"坦克!" 教程,现在我试图在Android上移植游戏,这是我第一次使用Unity,现在当它构建APK统一告诉我"无法构建APK"然后我得到一些错误,我附加你错误我认为这是致命的,请告诉我它有什么问题.
CommandInvokationFailure: Failed to build apk.
C:/Program Files/Java/jdk-9.0.1\bin\java.exe -Xmx2048M -D com.android.sdkmanager.toolsdir="C:/Android_SDK\tools" -D file.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar"-
stderr[
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at SDKMain.main(SDKMain.java:130)
Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder
at com.android.sdklib.internal.build.SignedJarBuilder.<init>(SignedJarBuilder.java:177)
at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:446)
at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:422)
at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:362)
at UnityApkBuilder.<init>(UnityApkBuilder.java:214)
at UnityApkBuilder.main(UnityApkBuilder.java:34)
... 5 more
Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 11 more
]
stdout[
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.Command.Run(System.Diagnostics.ProcessStartInfo …Run Code Online (Sandbox Code Playgroud) jmockit无法在eclipse中初始化:java.lang.IllegalStateException:在JDK 9上运行需要-javaagent:/jmockit-1.n.jar或-Djdk.attach.allowAttachSelf
如果我添加-Djdk.attach.allowAttachSelfVM参数,它可以正常工作.
为什么我需要添加该参数?jmockit并不是说在JDK 9上运行时是必需的.是的,JRE系统库指向JDK,是的,jmockit jar按照外部库的顺序高于junit.
版本:JUnit 4.12,Java jdk 9.0.1,jmockit 1.37,hamcrest core 1.3
java.base上的java.lang.ExceptionInInitializerError(testClass.java:20)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl) .java:62)在org的java.base/java.lang.reflect.Method.invoke(Method.java:564)的java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43).在org.junit.runners.model.FrameworkMethod.invokeExplosively的org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)中的junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) (FrameworkMethod.java:47)org.junit上的org.junit.runners.Statements.InvokeMethod.evaluate(InvokeMethod.java:17)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325). runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRu)nner.java:57)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)org.junit.runners.ParentRunner .runChildren(ParentRunner.java:288)位于org.junit的org.junit.runners.rarentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268). runners.ParentRunner.run(ParentRunner.java:363)位于org.eclipse.jdt.internal.junit.runner.TestExecution的org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86).运行(TestExecution.java:38)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner. java:761)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)引起:java.lang.IllegalStateException:运行 在JDK 9上需要在mockit.internal.startup.AgentLoader.loadAgent的mockit.internal.startup.AgentLoader.attachToRunningVM(AgentLoader.java:155)中使用-javaagent:/jmockit-1.n.jar或-Djdk.attach.allowAttachSelf (AgentLoader.java:60)at mockit.internal.startup.Startup.verifyInitialization(Startup.java:137)at mockit.Invocations.(Invocations.java:26)... 24更多
我有一个使用source/target = 1.9/1.9的多模块Gradle Java项目.有两个模块,my.base和my.dependsOnBase.该my.base模块没有其它的依赖:
module my.base {
exports my.base.foo;
exports my.base.bar;
}
Run Code Online (Sandbox Code Playgroud)
所述my.dependsOnBase模块仅具有单一的依赖,这是my.base:
module my.dependsOnBase {
requires my.base;
exports my.dependsOnBase.baz;
}
Run Code Online (Sandbox Code Playgroud)
当我运行$ gradle javadoc它在my.base上工作正常.但是当它到达my.dependsOnBase时,我得到以下错误输出:
/path/to/my $ gradle javadoc
> Task :dependsOnBase:javadoc FAILED
/path/to/my/dependsOnBase/src/main/java/module-info.java:26: error: module not found: my.base
requires my.base;
^
1 error
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':dependsOnBase:javadoc'.
> Javadoc generation failed. Generated Javadoc …Run Code Online (Sandbox Code Playgroud) 我习惯从以下链接访问Java SE文档,我可以从中搜索java.awt,java.util等软件包:
https://docs.oracle.com/javase/7/docs/api/
https://docs.oracle.com/javase/8/docs/api/
但是,当访问版本9的类似链接时,我可以看到一些模块结构与Java SE文档非常不同,直到版本8."旧"Java包发生了什么?
之后start-dfs.sh,我可以导航到http://localhost:9870。NameNode似乎运行得很好。
然后单击“实用程序->浏览文件系统”,并在Web浏览器中得到以下提示:
Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error
Run Code Online (Sandbox Code Playgroud)
深入日志文件($HADOOP_HOME/logs/hadoop-xxx-namenode-xxx.log),我发现:
2018-11-30 16:47:25,097 WARN org.eclipse.jetty.servlet.ServletHandler: Error for /webhdfs/v1/
java.lang.NoClassDefFoundError: javax/activation/DataSource
at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.(RuntimeBuiltinLeafInfoImpl.java:457)
at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:65)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:133)Run Code Online (Sandbox Code Playgroud)
因此缺少一堂课。为什么会这样,如何解决该问题?