2016-04-08 24 views
6

Sono rimasto bloccato per lo stesso problema da un po 'di tempo e non so perché ottengo il seguente run-time errore quando eseguo il mio progetto.UnsupportedNodeException: richiesta di un nodo che non fa parte del profilo e dei componenti specificati per questo flusso: punto di vista

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) 

Il mio codice Java per questo è

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); 
    } 
} 

I X3D file che ho bisogno di passare attraverso di essa in modo da visualizzare contengono una viewpoint e imageTexture url tag che sono testati per causare il problema. Quando elimino questi tag all'interno dei file X3D, funziona ma non ha l'output desiderato in quanto sembrava essere ingrandito e non avere texture il file X3D.

Il Jars che sto utilizzando sono 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, 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-core, xj3d-runtime, xj3d-script-base. Il modo in cui ho impostato le Opzioni VM è utilizzando -Xmx450M -Djava.library.path="C:\Users\matt\Documents\NetBeansProjects\jar" e ho aggiunto la libreria che contiene tutti gli Jars al progetto.

EDIT Non sta ancora lavorando

EDIT # 2

I due tag che causano il problema sono

<viewpoint centerOfRotation="7 1 0" position='10 0 40' orientation='0 0 0 1'></viewpoint>

<imageTexture url='"http://somewebsite.com/images/test.jpg"></imageTexture> Bare in menteche il sito Web sopra non è il sito Web in cui è memorizzata l'immagine ma segue lo stesso formato.

EDIT # 3

Il codice nel file X3D è ora <viewpoint centerOfRotation="7 1 0" position='10 0 40' orientation='0 0 0 1'></viewpoint>

<imageTexture url="http://somewebsite.com/images/test.jpg"></imageTexture>

e sto ancora ottenere l'errore punto di vista e non so come risolvere il problema it

+0

Poiché si tratta di un problema molto specifico, se fossi in te, specificherò chiaramente come impostare l'ambiente?Dove hai preso le librerie? Quale versione usi? ... –

+0

@NicolasFilotto Ho impostato l'ambiente seguendo le istruzioni fornite da Xj3D. Ho creato la mia libreria chiamata 'Xj3D' che contiene tutti i' Jars' di cui ho bisogno per l'esecuzione di – smitthy

+0

Normalmente causati da file jar errati. –

risposta

0

Per il primo tag, l'errore era ovviamente una falsa quotazione singola su url attributo.

Per il secondo, è possibile provare a utilizzare virgolette coerenti per tutti i propri attributi, alcuni parser hanno esito negativo su questo.

A livello globale, si potrebbe cominciare da lì:

  • controllo ben formati del vostro XML con strumenti come this validator
  • Verificare che il X3D è valida contro il XSD dichiarato nell'intestazione XML. Ci sono alcuni riferimenti per i validatori on this page, ma il modo più efficiente è ancora utilizzare uno strumento di authoring XML di tua scelta.
Problemi correlati