Olá Pessoal,
Primeiro: já naveguei 3 horas pesquisando aqui e mais 2 pela internet e encontrei vários tópicos sobre leituras de arquivos dentro e fora de pacotes .jar, nenhum descreve meu problema. Também pesquisei em inglês em outros fóruns em outras horas, também nada.
Segundo: gostaria de saber de vocês se tem alguma ideia sobre isso:
Estou desenvolvendo uma biblioteca de programação para manipular ontologias, quero gerar um .jar para que outras pessoas possas utilizar em seus projetos inserindo-o no build path, ok.
O problema é que eu quero instanciar um objeto da minha classe principal e passar o caminho do txt nessa instanciação.
- Não quero incluir o txt dentro do .jar.
- Não quero deixar o txt junto do diretório do projeto.
Então para isso eu tenho um conjunto de classes onde é necessário que o programador inicie por:
Mediator med = new Mediator(ontologia,"C:/Users/Usuario/workspace/teste.txt",1);
med.getKnowledgeRelation();
Ignorem ontologia, atentem para o caminho do txt.
Quando o .jar é usado dá uma série de erros quando chega nessa parte abaixo:
[code]File file = new File(this.archive);
InputStream reading;
try {
reading = new FileInputStream(file);
InputStreamReader rLection = new InputStreamReader(reading);
BufferedReader bLection = new BufferedReader(rLecture);
String txtLector = bLecture.readLine();
while(txtLector != null){
maxRows++;
txtLector = bLecture.readLine();
}
bLecture.close();
rLecture.close();
reading.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}[/code]
Onde no this.archive consta quela String com o caminho do txt. Dependendo dos projetos que andei testando, ocorre um dos dois grupos de exceções:
java.io.FileNotFoundException: (A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at ontocomAgent.communication.AgentMsgConversion.countFileRows(AgentMsgConversion.java:111)
at ontocomAgent.communication.AgentMsgConversion.getMessageArray(AgentMsgConversion.java:203)
at ontocomAgent.communication.Communication.getContent(Communication.java:61)
at ontocomAgent.mediator.Mediator.getKnowledgeRelation(Mediator.java:202)
at ontology.ontotest.execute(ontotest.java:29)
at jason.asSemantics.TransitionSystem.applyExecInt(TransitionSystem.java:632)
at jason.asSemantics.TransitionSystem.applySemanticRule(TransitionSystem.java:213)
at jason.asSemantics.TransitionSystem.reasoningCycle(TransitionSystem.java:1186)
at jason.infra.centralised.CentralisedAgArch.run(CentralisedAgArch.java:205)
at java.lang.Thread.run(Thread.java:662)
java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at ontocomAgent.communication.AgentMsgConversion.countFileRows(AgentMsgConversion.java:116)
at ontocomAgent.communication.AgentMsgConversion.getMessageArray(AgentMsgConversion.java:207)
at ontocomAgent.communication.Communication.getContent(Communication.java:61)
at ontocomAgent.mediator.Mediator.getKnowledgeRelation(Mediator.java:202)
at userAgent.setup(userAgent.java:30)
at jade.core.Agent$ActiveLifeCycle.init(Agent.java:1522)
at jade.core.Agent.run(Agent.java:1468)
at java.lang.Thread.run(Unknown Source)
Meu projeto é este ontocomAgent. Sendo que no projeto deste .jar, no Eclipse, tudo está rodando normal, sem erros, é na utilização do .jar mesmo que tudo explode, hehe.
O que já verifiquei:
- Já havia verificado permissões aqui no win7 e repassei todas (estou executando o ambiente como Admin também).
- Tentei getResourceAsStream, getClass, outras funções para ler arquivos e nada, nada mesmo. As vezes, dependendo do código, até funciona, mas larga as exceções do mesmo jeito (bruxaria).
- Já verifiquei se estou utilizando algo como null também em todas as classes, por causa do NullPointerException.
- Obviamente já verifiquei se o caminho e o nome do arquivo poderiam estar errado, está tudo ok porque funciona de boa enquanto desenvolvo a lib.
Estou achando que existe uma limitação aí, o que acham?