.jar hat nicht alle Klassen ???

Hi

Ich hab im aktuellen Projekt das speech API testweise eingebaut, von Eclipse aus gestartet funktioniert es und beim Ausführen höre ich den Text.

Wenn ich es von Eclipse aus als Runnable JAR File exportiere (alle 3 Libary handlings probiert) höre ich keine Sprachausgabe beim start.

woran kann das liegen ???
Das JAR-File hat ca. 400kb zugenommen mit dem Sprach-API, also sollte es dabei sein.

S.
 
Sollte dabei sein ist nicht ist dabei. Warum entpackst du die JAR nicht einfach mal mit win-rar oder was auch immer du auf deiner maschiene benutzt? Dann kannst du dir sicher sein 😉
 
hab ich gemacht, ist in einem verzeichnis drinnen, nur woran kann es liegen, daß ich keine Sprache bekomme ???
Mein Problem ist dann, daß evtl. weitere Pakete auch nicht funktionieren, wenn ich wieder welche verwende. 🙁
 
auch wenn FAT-JAR bzw OneJAR eine lösung ist eine verwendete lib mit in das eigene jar zu packen (wobei dies linzenz-rechtlich meist nicht gern gesehen wird oder gar untersagt ist) sollte man es eher so machen das man libs so in ihrem zustand belässt und sie in der CLASSPATH einbindet ... entweder über das manifest oder über den system-globalen CP ...

auch kann es beim re-pack ganz einfach zu fehlern gekommen sein ... gehe daher mit F.S.WhiTeY eine meinung : einfach mal mit nem pack-programm entpacken und gucken ob auch wirklich alles dabei ist und am richtigen ort

was zusätzlich noch ein problem sein kann : der code der lib ist nicht dafür gedacht ein re-pack zu überstehen ... also nur so funktioniert wie er ist ... das fängt bei kleinigkeiten wie dem laden von daten an und geht dann über in komplexe klassen-probleme ...
 
Läuft das Programm denn ansonsten problemlos? Nur bis auf die Sprachausgabe? Kommt eine Fehlermeldung, wenn du das Programm über die Konsole startest?
 
Die NPE müsste dir doch weitere Infos liefern, wo der Fehler genau herkommt... Schreib doch mal hier rein, was da genau steht...
 
So, hab nun ein wenig probiert, komm aber nicht ganz auf die Lösung:
Java:
			public void run() {
				System.out.println("1");
				VoiceManager voiceManager = VoiceManager.getInstance();
				System.out.println("2");
				Voice[] voices = voiceManager.getVoices();
				System.out.println("Anzahl Voicec: " + voices.length);
				for (int i = 0; i < voices.length; i++) {
					  System.out.println(voices[i].getName());
					}
				com.sun.speech.freetts.Voice voice = voiceManager.getVoice("kevin");
				System.out.println("3");
				voice.allocate();
				System.out.println("4");
				voice.speak("Welcome to the Pinballsoftware from Roland Schwarz");
				System.out.println("5");
				voice.deallocate();
			}
Ich bekomme im fertigen JAR 0 Voicec und somit kann in der folgenden Zeile
Java:
com.sun.speech.freetts.Voice voice = voiceManager.getVoice("kevin");
nicht zugeordnet werden.

Ich hab jetzt den Kevin hier im jar drinnen: flip_20130208.jar\com\sun\speech\freetts\en\us\cmu_us_kal
Ich hab dort die klasse KevinVoiceDirectory.class sowie 4 weitere files, 2 davon über 1 MB
Wie kann ich dies zuordnen ??

S.
 
Zuordnen.. ausprobieren.. alles so eine sache. Wenn du wirklich eingrenzen willst was da schief läuft ist sout sicher eine vorgehensweise. Eine andere ist was der Compiler da nun wirklich veranstaltet hat.

Wenn du schauen willst was da nach dem Compile abgelaufen ist : Decompilieren, an schauen.

Z.B.: Mit DJ Java Decompiler.

Oder ein "Decompile-Debug" mit JADclips wenn du Eclipse benutzt:

Main Page - JadClipse


Desweiteren kannst du dir mal anschauen ob der VoiceFile definitiv existiert mit :

Java:
File voice = new File("Relativer_Pfad_zur_Voice-Datei")

System.out.println(voice.exists());

Damit grenzt du eventuelle schwierigkeiten mit dem Pfad ein.

Mehr fällt mir deizeit nicht ein.

Viel spaß beim Debuggen.

LG

David
 

Neue Themen


Zurück
Oben