- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试创建一个基于 Karaf 的基本虚拟现实 IDE。
我有 3 个 maven 项目:
我将它们全部安装到 Karaf 中:
karaf@root()> bundle:list
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
----+--------+-----+--------------------+---------------------------------------------------------------------------
31 | Active | 80 | 4.3.0 | Apache Karaf :: OSGi Services :: Event
54 | Active | 80 | 1.3.2 | Apache Aries SPI Fly Dynamic Weaving Bundle
55 | Active | 80 | 9.0.0 | org.objectweb.asm
56 | Active | 80 | 9.0.0 | org.objectweb.asm.commons
57 | Active | 80 | 9.0.0 | org.objectweb.asm.tree
58 | Active | 80 | 9.0.0 | org.objectweb.asm.tree.analysis
59 | Active | 80 | 9.0.0 | org.objectweb.asm.util
60 | Active | 80 | 2.0.17 | OpenWebBeans Core
61 | Active | 80 | 2.0.17 | SPI definition
62 | Active | 80 | 1.1.3 | Apache Aries CDI - CDI Component Runtime (CCR)
63 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI classes for Portable Extensions
64 | Active | 80 | 1.1.3 | Apache Aries CDI - Container using Apache OpenWebBeans
65 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI
66 | Active | 80 | 1.0.12 | Apache Felix Converter
67 | Active | 80 | 1.2.0 | Apache Geronimo JSR-330 Spec 1.0
68 | Active | 80 | 1.1.0 | Apache Geronimo Expression Language Spec 2.2
69 | Active | 80 | 1.2.0 | Apache Geronimo Interceptor Spec 1.2
70 | Active | 80 | 1.2.0 | Apache Geronimo JCDI Spec 2.0
71 | Active | 80 | 1.3.0.3 | Apache ServiceMix :: Specs :: Annotation API 1.3
72 | Active | 80 | 4.17.0 | Apache XBean :: ASM shaded (repackaged)
73 | Active | 80 | 4.17.0 | Apache XBean OSGI Bundle Utilities
74 | Active | 80 | 4.17.0 | Apache XBean :: Finder shaded (repackaged)
75 | Active | 80 | 1.0.1.201505202024 | org.osgi:org.osgi.namespace.extender
76 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.implementation
77 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.service
78 | Active | 80 | 1.0.0.201810101357 | org.osgi:org.osgi.service.cdi
79 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.function
80 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.promise
81 | Active | 80 | 4.3.1.SNAPSHOT | Apache Karaf :: OSGi Services :: Event
134 | Active | 80 | 1.0.0 | Virtual reality server
135 | Active | 80 | 0.0.1.SNAPSHOT | VRComponent
136 | Active | 80 | 0.0.1.SNAPSHOT | VRFrame
142 | Active | 80 | 0.0.1.SNAPSHOT | Virtual reality integrated development environment (VRIDE)
karaf@root()>
但是当我尝试启动 VRIDE 包时,我得到了这个异常:
10:00:42.193 WARN [fileinstall-C:\Program Files\apache-karaf-4.3.0/deploy] Error while creating extension
java.lang.NoClassDefFoundError: Lde/e_nexus/vr/tk/VRFrame;
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_232]
at java.lang.Class.privateGetDeclaredFields(Class.java:2611) ~[?:1.8.0_232]
at java.lang.Class.getDeclaredFields(Class.java:1944) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.util.Reflection.allFields(Reflection.java:47) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.annotated.AnnotatedTypeImpl.<init>(AnnotatedTypeImpl.java:42) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.Discovery.lambda$discover$8(Discovery.java:133) ~[!/:1.1.3]
at java.util.HashMap$Values.forEach(HashMap.java:981) ~[?:1.8.0_232]
这是我尝试加载的 Java 类:
package de.e_nexus.desktop.vr.ide;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
import de.e_nexus.vr.server.ClientKeyboardScancode;
import de.e_nexus.vr.server.VRClientHelmetAndControllerListener;
import de.e_nexus.vr.server.VRClientKeyboardListener;
import de.e_nexus.vr.server.VRServer;
import de.e_nexus.vr.server.listeners.VRClientRequestAppInfo;
import de.e_nexus.vr.server.listeners.VRClientStatusListener;
import de.e_nexus.vr.server.listeners.interaction.HelmetAndControllerInfo;
import de.e_nexus.vr.server.osgi.inter.VRServerService;
import de.e_nexus.vr.tk.VRFrame;
@ApplicationScoped
@Service
public class StartIDE implements VRClientStatusListener, VRClientRequestAppInfo, VRClientHelmetAndControllerListener, VRClientKeyboardListener {
/**
* The logger for this class.
*/
private static final Logger LOG = Logger.getLogger(StartIDE.class.getCanonicalName());
private final static Object lock = new Object();
private VRServer vrServer;
public void notifyStatus(boolean connected) {
if (!connected) {
synchronized (lock) {
lock.notify();
}
}
}
@Reference
@Inject
private VRServerService vrServerService;
private VRFrame applicationFrame;
@PostConstruct
public void initialize() {
LOG.fine("Starting VR IDE");
vrServer = vrServerService.getVRServer();
applicationFrame = new VRFrame(vrServer, "test");
LOG.info(getLatin1Title() + " started successfully!");
}
@PreDestroy
public void teardown() {
applicationFrame.remove();
LOG.info("Stoped " + getLatin1Title() + " successfully!");
vrServer = null;
}
public VRServer getVrServer() {
return vrServer;
}
@Override
public void notify(HelmetAndControllerInfo haci) {
}
@Override
public String getLatin1Title() {
return "VR IDE";
}
@Override
public void notifyKeyboardEvent(ClientKeyboardScancode[] downs, ClientKeyboardScancode[] ups, long incomingTime) {
System.out.println("me");
}
}
这是完整的堆栈跟踪:
java.lang.NoClassDefFoundError: Lde/e_nexus/vr/tk/VRFrame;
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_232]
at java.lang.Class.privateGetDeclaredFields(Class.java:2611) ~[?:1.8.0_232]
at java.lang.Class.getDeclaredFields(Class.java:1944) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.util.Reflection.allFields(Reflection.java:47) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.annotated.AnnotatedTypeImpl.<init>(AnnotatedTypeImpl.java:42) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.Discovery.lambda$discover$8(Discovery.java:133) ~[!/:1.1.3]
at java.util.HashMap$Values.forEach(HashMap.java:981) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.container.Discovery.discover(Discovery.java:130) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.ContainerState.<init>(ContainerState.java:178) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.Activator.doCreateExtension(Activator.java:209) [!/:1.1.3]
at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:242) [!/:1.1.3]
at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [!/:1.1.3]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) [osgi.core-7.0.0.jar:?]
at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4817) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2336) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [!/:3.6.8]
Caused by: java.lang.ClassNotFoundException: de.e_nexus.vr.tk.VRFrame not found by de.e-nexus.component [87]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_232]
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_232]
... 27 more
最佳答案
正如日志记录指出的那样:
Caused by: java.lang.ClassNotFoundException: de.e_nexus.vr.tk.VRFrame not found by de.e-nexus.component [87]
这意味着 Karaf 正在从显然不存在的组件子模块中搜索 VRFrame。
这是有道理的,因为所有 java 包都被导出,VRFrame 的包是不明确的。我按照 özkan pakdil 所说的进行操作,并将 java 包重命名为一个唯一的名称。从那以后,它就像一个魅力。
谢谢厄兹坎!您的回答包含一些有用的提示,而我的问题的根源是模棱两可的包名。
关于java - OSGi 中的 NoClassDefFoundError 尽管它是导出和导入的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65504619/
当我这样做时... import numpy as np ...我可以使用它但是... import pprint as pp ...不能,因为我需要这样做... from pprint import
我第一次尝试将 OpenCV 用于 Python 3。要安装,我只需在终端中输入“pip3 install opencv-python”。当我这样做时,我在 Finder(我在 Mac 上)中看到,在
如果有一个库我将使用至少两种方法,那么以下之间在性能或内存使用方面是否有任何差异? from X import method1, method2 和 import X 最佳答案 有区别,因为在 imp
我正在从 lodash 导入一些函数,我的同事告诉我,单独导入每个函数比将它们作为一个组导入更好。 当前方法: import {fn1, fn2, fn3} from 'lodash'; 首选方法:
之间有什么关系: import WSDL 中的元素 -和- import元素和在 XML Schema ...尤其是 location 之间的关系前者和 schemaLocation 的属性后者的属性
我在从 'theano.configdefaults' 导入 'local_bitwidth' 时遇到问题。并显示以下消息: ImportError
我注意到 React 可以这样导入: import * as React from 'react'; ...或者像这样: import React from 'react'; 第一个导入 react
对于当前的项目,我必须使用矩阵中提供的信息并对其进行数学计算,以及使用 ITK/VTK 函数来显示医疗信息/渲染。基本上我必须以(我猜)50/50 的方式同时使用 matlab 例程和 VTK/ITK
当我看到 pysqlite 的示例时,SQLite 库有两个用例。 from sqlite3 import dbapi2 as sqlite3 和 import sqlite3 为什么有两种方式支持s
我使用 Anaconda Python 发行版:Python 2.7 x64 和 Windows 7 SP1 x64 Ultimate。 当我import matplotlib.pyplot时,我得到
目录 【容器】镜像导出/导入 导出 导入 带标签 不带标签,后期修改 【仓库】镜像导出/导入
我正在寻找一种导入模块的方法,以便我可以从子文件夹 project/v0 和根文件夹 project 运行脚本。/p> 我在 python 3.6 中的文件结构(这就是没有初始化文件的原因) proj
我通常被告知以下是不好的做法。 from module import * 主要原因(或者有人告诉我)是,您可能会导入一些您不想要的东西,并且它可能会隐藏另一个模块中具有类似名称的函数或类。 但是,Py
我为 urllib (python3) 编写了一个小包装器。在if中导入模块是否正确且安全? if self.response_encoding == 'gzip': import gzip
我正在 pimcore 中创建一个新站点。有没有办法导出/导入 pimcore 站点的完整数据,以便我可以导出 xml/csv 格式的 pimcore 数据进行必要的更改,然后将其导入回来? 最佳答案
在 Node JS 中测试以下模块布局,看起来本地导出的定义总是在名称冲突的情况下替换外部导出的定义(参见 B.js 中的 f1)。 A.js export const f1 = 'A' B.js e
我在使用 VBA 代码时遇到了一些问题,该代码应该将 excel 数据导入我的 Access 数据库。当我运行代码时,我收到一个运行时错误“运行时错误 438 对象不支持此属性或方法”。来自我在其他论
我有一个名为 elements 的包,其中包含按钮、trifader、海报等内容。在 Button 类中,我正在执行 from elements import * 这执行正常,当我尝试 print(p
在我长期使用 python 的经验中,我遇到了一个非常奇怪的问题。 提前我想说我想知道为什么会发生这种情况 ,而不是如何更改我的代码或如何修复它,因为我也可以做到。 我正在使用 python2.7.3
我正在更新我的包。但是,我正在为依赖项/导入而苦苦挣扎。我使用了两个冲突的包 - ggplot2和 psych及其功能 alpha当然还有 alpha ggplot2 的对象不同于 alpha psy
我是一名优秀的程序员,十分优秀!