Buongiorno a tutti ragazzi,
purtroppo per lavoro sono dovuto tornare sull'interoperabilità tra java e javafx.
il problema è il seguente:
Devo far riprodurre a java, tramite javafx, dei video in rotazione. fin qui nessun problema, ho il link o i link dei video e li sparo a java fx, tramite una interfaccia. qua sotto vi posto il codice:
metodo che "manda" i link e posizione e dimensione del video:
codice:
public static void vediSingoloVideo(int audio,String arrayVideo,int posx,int posy,int larg,int alt){
//JavaTestSV jt = new JavaTestSV();
//jt.eseguiSingoloVideo(audio, arrayVideo, posx, posy, larg, alt);
Context context = FXLocal.getContext();
FXClassType instance = context.findClass("provavideo.Main");
ObjectValue obj = (ObjectValue)instance.newInstance();
InterfaceJavaSV ji = (InterfaceJavaSV)obj.asObject();
//ji.addVideo(audio,arrayV,larg,alt);
ji.mostra(audio,arrayVideo,posx,posy,larg,alt);
}
questo si collega a InterfaceJavaSV, presente in un jar da me creato. questa classe è cosi composta:
InterfaceJavaSV.java
codice:
package provavideo;
public interface InterfaceJavaSV {
//public void addVideo(int audio,String array,int larg,int alt);
public void mostra(int audio,String array,int posx,int posy,int larg,int alt);
}
e l'ultima classe che uso per rappresentare il video è questa:
Main.fx
codice:
package provavideo;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.media.MediaError;
import javafx.stage.*;
import javafx.scene.*;
import provavideo.InterfaceJavaSV;
class Main extends InterfaceJavaSV {
var x;
var y;
var w;
var h;
var aud;
var film;
public override function mostra(audio:Integer,video:String,posX: Integer,posY: Integer,larg: Integer,alt: Integer) : Void {
x = posX;
y = posY;
w = larg;
h = alt;
aud = audio;
film = video;
Stage {
title: ""
style: StageStyle.TRANSPARENT
resizable:true
x:x
y:y
width:w
height:h
scene: Scene {
content: [
if(aud == 0){
MediaView{
smooth:false
preserveRatio:false
cache:true
fitWidth: w
fitHeight:h
disable:false
mediaPlayer:MediaPlayer{
mute:true
media:Media{
onError: function(e:MediaError) {
println("Media error {e}");
}
source:film
}
autoPlay:true
repeatCount:MediaPlayer.REPEAT_FOREVER
}
}
}
else{
MediaView{
smooth:false
preserveRatio:false
cache:true
fitWidth: w//larg
fitHeight: h//alt
disable:false
mediaPlayer:MediaPlayer{
mute:false
volume:1.0
media:Media{
onError: function(e:MediaError) {
println("Media error {e}");
}
source:film
}
autoPlay:true
repeatCount:MediaPlayer.REPEAT_FOREVER
}
}
}
]
}
}
}
}
Ora, il tutto su netbeans funziona, ma da prompt mi genera il seguente errore:
codice:
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\user>cd C:\Documents and Settings\user\Desktop\Test Mo
nitor 22-03-2010
C:\Documents and Settings\user\Desktop\Test Monitor 22-03-2010>java EasyMonitor
Exception in thread "Thread-3" java.lang.NoClassDefFoundError: javafx/stage/Stag
e
at provavideo.Main.mostra(Main.fx:27)
at MonitorObj.vediSingoloVideo(MonitorObj.java:231)
at MyTimerTask.disegnaMonitor(EasyMonitor.java:2198)
at MyTimerTask$1.run(EasyMonitor.java:3872)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javafx.stage.Stage
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 5 more
C:\Documents and Settings\user\Desktop\Test Monitor 22-03-2010>
Perchè? il classpath contiene tutti i puntamenti necessari.. aiutooooo!!!