Java UnsupportedNodeException:请求不属于此流的指定概要文件和组件的节点:视点
我已经在同一个问题上纠缠了一段时间,我不知道为什么在运行我的项目时会出现以下运行时错误Java UnsupportedNodeException:请求不属于此流的指定概要文件和组件的节点:视点,java,netbeans,jar,x3d,Java,Netbeans,Jar,X3d,我已经在同一个问题上纠缠了一段时间,我不知道为什么在运行我的项目时会出现以下运行时错误 Exception in thread "main" org.web3d.vrml.lang.UnsupportedNodeException: Request for a node that is not part of the specified profile and components for this stream: viewpoint at org.web3d.vrml.renderer
Exception in thread "main" org.web3d.vrml.lang.UnsupportedNodeException: Request for a node that is not part of the specified profile and components for this stream: viewpoint
at org.web3d.vrml.renderer.DefaultNodeFactory.createVRMLNode(DefaultNodeFactory.java:730)
at org.web3d.vrml.renderer.ogl.OGLMainSceneBuilder.startNode(OGLMainSceneBuilder.java:147)
at org.web3d.vrml.renderer.ogl.OGLVRMLSceneBuilder.startNode(OGLVRMLSceneBuilder.java:514)
at org.web3d.x3d.jaxp.X3DSAVAdapter.startElement(X3DSAVAdapter.java:830)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1364)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2787)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at org.web3d.parser.GeneralisedReader.parse(GeneralisedReader.java:261)
at org.xj3d.impl.core.loading.DefaultWorldLoader.loadNow(DefaultWorldLoader.java:156)
at org.xj3d.impl.core.loading.DefaultWorldLoader.loadNow(DefaultWorldLoader.java:203)
at org.web3d.vrml.scripting.browser.X3DCommonBrowser.createX3DFromURL(X3DCommonBrowser.java:264)
at org.web3d.vrml.scripting.external.sai.SAIBrowser.createX3DFromURL(SAIBrowser.java:843)
at xj3dtest.Xj3DTest.<init>(Xj3DTest.java:50)
at xj3dtest.Xj3DTest.main(Xj3DTest.java:56)
我需要通过的X3D
文件显示包含视点
和图像纹理url
标记,这些标记经过测试可导致问题。当我从X3D
文件中删除这些标记时,它确实可以工作,但没有所需的输出,因为它似乎被放大了,并且在X3D
文件中没有纹理
我使用的jar
是gluegen-rt,gluegen-rt-natives-linux-amd64,gluegen-rt-natives-windows-amd64,gluegen-rt-natives-linux-i586,j3d-core-1.3.1,jhall,joal,joal-natives-linux-amd64,joal-natives-windows-amd64,joal-natives-linux-i586,joal-all-natives-linux-amd64,joal-all-natives-windows-amd64,joal-all-natives-linux-i586、xj3d.browser_2.1.0-nps、xj3d.cadfilter_2.1.0_nps、xj3d.2.1-3rdparty-nps、xj3d.2.1-nps、xj3d核心、xj3d运行时、xj3d脚本库
。我设置VM选项的方法是使用-Xmx450M-Djava.library.path=“C:\Users\matt\Documents\NetBeansProjects\jar”
,并将包含所有jar的库添加到项目中
编辑
它仍然不起作用
编辑#2
导致问题的两个标签是
对于第一个标记,错误显然是url
属性上的虚假单引号
对于第二种方法,您可以尝试对所有属性使用一致的引号,有些解析器在这方面失败
在全球范围内,您可以从这里开始:
- 使用以下工具检查XML的格式是否良好
- 检查X3D是否对XML头中声明的xsd有效。验证器有一些参考资料,但最有效的方法仍然是使用您选择的XML创作工具
由于这是一个非常具体的问题,如果我是您,我会明确说明如何设置您的环境?你从哪儿弄来的图书馆?你用哪个版本@NicolasFilotto I按照Xj3D提供的说明设置环境。我创建了我自己的库,名为Xj3D
,其中包含由坏jar文件导致的正常运行所需的所有jar
。@smitty您是否可以共享“test.x3d”文件,或者从x3d中显式复制那些您知道导致错误的标记problem@smitthy我注意到,参数有单引号和双引号,url=“(单+双)是打字错误还是您的实际代码?
package xj3dtest;
import java.awt.BorderLayout;
import java.awt.Container;
import static java.lang.Boolean.TRUE;
import javax.swing.JFrame;
import org.web3d.x3d.sai.Browser;
import org.web3d.x3d.sai.BrowserFactory;
import org.web3d.x3d.sai.X3DComponent;
import org.web3d.x3d.sai.X3DScene;
import java.util.HashMap;
public class Xj3DTest extends JFrame {
public Xj3DTest(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Setup browser parameters
HashMap requestedParameters=new HashMap();
requestedParameters.put("Antialiased",TRUE);
requestedParameters.put("TextureQuality","medium");
requestedParameters.put("PrimitiveQuality","medium");
requestedParameters.put("Xj3D_InterfaceType","SWING");
requestedParameters.put("Xj3D_NavbarShown",TRUE);
requestedParameters.put("Xj3D_NavbarPosition","TOP");
requestedParameters.put("Xj3D_LocationShown",TRUE);
requestedParameters.put("Xj3D_LocationPosition","TOP");
requestedParameters.put("Xj3D_LocationReadOnly",TRUE);
requestedParameters.put("Xj3D_ShowConsole",TRUE);
requestedParameters.put("Xj3D_OpenButtonShown",TRUE);
requestedParameters.put("Xj3D_ReloadButtonShown",TRUE);
requestedParameters.put("Xj3D_StatusBarShown",TRUE);
requestedParameters.put("Xj3D_FPSShown",TRUE);
requestedParameters.put("Xj3D_ContentDirectory","CurrentDirectory");
requestedParameters.put("Xj3D_AntialiasingQuality","low");
requestedParameters.put("Xj3D_Culling_Mode", "frustum");
System.setProperty("x3d.sai.factory.class", "org.xj3d.ui.awt.browser.ogl.X3DOGLBrowserFactoryImpl");
X3DComponent x3dComponent = BrowserFactory.createX3DComponent(requestedParameters);
Browser browser = x3dComponent.getBrowser();
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add((javax.swing.JPanel)x3dComponent, BorderLayout.CENTER);
X3DScene scene = browser.createX3DFromURL(new String[] {"test.x3d"});
browser.replaceWorld(scene);
}
public static void main(String[] args) {
Xj3DTest frame = new Xj3DTest("Xj3D test");
frame.setSize(640, 480);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}