Poblema com .jar!

2 respostas
G

Bom dia galera , estou com um probleminha, fiz uma aplicação de teste para JavaSpeech “reconhecedor de voz”… está rodando normalmente na IDE… existe uma parte simples grafica só pra sair a palavra em uma jtextfield etc… ta rodando normalmente. Porem ao criar o .jar ele cria normalmente mais ao iniciar pude observar no prompt que ele da esse seguinte erro:

java.lang.NullPointerException
        at br.akls.javaspeech.recognizer.Iniciar.iniciar(Iniciar.java:61)
        at br.akls.javaspeech.recognizer.Reconhecedor.main(Reconhecedor.java:12)

já tentei de tudo…mudar codico fonte… deixar o mais simples da aplicacao possivel…já dei uma pesquisada no google tb, mais ta complicado…
se precisar eu coloco o codigo fonte, mais são 3 classes simples…
OBS: tive que adicionar uma informação da variavel de ambiente path no caso ;C:\Arquivos de programas\ViaVoice\Bin\ é preciso adicionar alguma informação na hora de gerar o .jar?
uso Eclipse… já tentei gerar todos os tipow de jar inclusive o “FatJar”.
se alguem puder me ajudar… obrigado!

2 Respostas

mauricioadl

posta o codigo.

G

Segue as classes:

(Principal - Main)

package br.akls.javaspeech.recognizer;

public class Principal {	
	public static void main(String args[]) {
		
		Formulario obj_form = new Formulario();
		obj_form.setVisible(true);
               
		String url = "C:/Documents and Settings/133/Desktop/Teste/gramatica.gram";
		Iniciar myIniciar = new Iniciar(url);
	    
		
	}
}

A classe Iniciar a onde sera recebido a frase ou palavra… e onde a “gramatica.gram” que é responsável pelas palavras de reconhecimento… no caso eu falar: Oi ela busca nesse .gram…

package br.akls.javaspeech.recognizer;
import java.io.FileReader;


import java.util.Locale;

import javax.speech.Central;
import javax.speech.EngineModeDesc;
import javax.speech.recognition.Recognizer;
import javax.speech.recognition.Result;
import javax.speech.recognition.ResultAdapter;
import javax.speech.recognition.ResultEvent;
import javax.speech.recognition.ResultToken;
import javax.speech.recognition.RuleGrammar;

public class Iniciar extends ResultAdapter {
	
	public static Recognizer rec;

	   public void resultAccepted(ResultEvent e) {
		
		Result r = (Result) (e.getSource());
		ResultToken tokens[] = r.getBestTokens();
		String frase = "";
		for (int i = 0; i < tokens.length; i++) {
			frase = frase.concat(tokens[i].getSpokenText() + " ");
		}
		//passa para o formulario a palavra
		Formulario myFormulario = new Formulario();
		myFormulario.chamaTela(frase);

	}
	
	public Iniciar(String url) {
		try {
			
			rec = Central.createRecognizer(new EngineModeDesc(new Locale("pt","BR")));
			rec.allocate(); 
		FileReader reader = new FileReader(url);
            RuleGrammar gram = rec.loadJSGF(reader);
			gram.setEnabled(true);
			rec.addResultListener(this);
			rec.commitChanges();
			rec.requestFocus();
			rec.resume();
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		
	}
}

e uma JFrame simples só para receber a palavra numa JTextfield…

package br.akls.javaspeech.recognizer;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Formulario extends JFrame implements ActionListener 
{
/**
	 * 
	 */
	
JLabel lb_titulo, lb_palavra;
JTextField tf_palavra;


String palavra;

public Formulario()
{
	
	setTitle("Software de Reconhecimento");
	setSize(250,180);
	setLocation(75,75);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setResizable(false);
	getContentPane().setBackground(new Color(155,180,255));
	getContentPane().setLayout(null);
	
	lb_titulo = new JLabel ("Teste");
	lb_palavra = new JLabel ("Palavra");
	
        lb_palavra.setForeground(Color.blue);
	
        lb_titulo.setFont(new Font("Arial",Font.BOLD,25));
	lb_palavra.setFont(new Font("Arial",Font.BOLD,20));
	
        tf_palavra = new JTextField(20);
	
        lb_titulo.setBounds(50,30,800,40);
	tf_palavra.setBounds(24,100,200,25);
	lb_palavra.setBounds(80,70,800,40);
	
        tf_palavra.setEditable(true);
	
	
	getContentPane().add(lb_titulo);
	getContentPane().add(tf_palavra);
	getContentPane().add(lb_palavra);
	tf_palavra         .addActionListener(this);
	
	
  }
 
 
	public void chamaTela(String frase){
        Formulario obj_form = new Formulario();
	obj_form.tf_palavra.setText(frase);
	
	obj_form.actionPerformed(new ActionEvent(new Object(),0,frase));
	obj_form.setVisible(true);
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
Criado 3 de abril de 2012
Ultima resposta 3 de abr. de 2012
Respostas 2
Participantes 2