Besoin de résoudre ce problème: java.io.IOException: Prématuré EOF

J'essaye d'accéder à la uniprot site web pour récupérer une liste de séquences de protéines avec leurs profils dans un fichier XML. La taille du fichier est énorme. Je suis l'aide de l'eclipse qui viennent avec JBPM package complet. Aussi, je suis en utilisant ubuntu sous virtual box. Maintenant quand je lance mon code j'obtiens ce stacktrace:

 java.io.IOException: Premature EOF
at sun.net.www.http.ChunkedInputStream.fastRead(ChunkedInputStream.java:234)
at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:662)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2512)
at edu.uga.uniprot.amna.QueryExecuter.ExecuteQuery(QueryExecuter.java:40)
at edu.uga.uniprot.amna.Uniprot.getProteenStringByDFamily(Uniprot.java:40)
at edu.uga.uniprot.amna.Uniprot.getProteensByDFamily(Uniprot.java:55)
at org.drools.bpmn2.Process_org_drools_bpmn2_Hello_World_0.action4(Process_org_drools_bpmn2_Hello_World_0.java:60)
at org.drools.bpmn2.Process_org_drools_bpmn2_Hello_World_0Action4Invoker.execute(Process_org_drools_bpmn2_Hello_World_0Action4Invoker.java:14)
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:47)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:188)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:302)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:154)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:124)
at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1095)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:306)
at com.sample.ProcessTest.main(ProcessTest.java:49)
java.lang.RuntimeException: unable to execute Action
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:49)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:188)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:302)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:154)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:124)
at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1095)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:306)
at com.sample.ProcessTest.main(ProcessTest.java:49)
Caused by: java.lang.NullPointerException
at java.io.StringReader.<init>(StringReader.java:33)
at edu.uga.uniprot.amna.Uniprot.loadProteenFromString(Uniprot.java:117)
at edu.uga.uniprot.amna.Uniprot.getProteensByDFamily(Uniprot.java:58)
at org.drools.bpmn2.Process_org_drools_bpmn2_Hello_World_0.action4(Process_org_drools_bpmn2_Hello_World_0.java:60)
at org.drools.bpmn2.Process_org_drools_bpmn2_Hello_World_0Action4Invoker.execute(Process_org_drools_bpmn2_Hello_World_0Action4Invoker.java:14)
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:47)
... 14 more

quelqu'un peut-il aider à la façon de résoudre cette erreur OU ce qui cause de ça?

Voici le code qui génère l'erreur:

public static String ExecuteQuery(String queryURL, boolean writeFile) { 
URL url;
try {
System.out.println("Strat getting Data"); 
String output = ""; 
int read; 
RandomAccessFile  file = null; 
url = new URL(queryURL);
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/xml");
connection.connect();       
//read the result from the server
if(writeFile == true) { 
file = new RandomAccessFile(fileName, "rw");
} 
InputStream stream = connection.getInputStream();
byte[] buffer = new byte[1024]; 
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((read = stream.read(buffer, 0, 1024)) != -1) { 
//System.out.println(new String(buffer)); 
output = output + new String(buffer).substring(0, read); 
if(writeFile == true) { 
file.write(buffer, 0, read); 
} 
buffer = new byte[1024]; 
}
System.out.println(output); 
return output; 
} catch (MalformedURLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} 
return null; 
}
  • Comment quelques-uns des codes Java???
  • Vous n'avez pas besoin d'allouer un nouveau tampon à chaque fois autour de cette boucle, c'est juste la flagellation de la GC à la mort. Vous pourriez véritable réécriture new String(buffer).substring(0, read) comme new String(buffer, 0, read) trop.
InformationsquelleAutor thinkBig | 2011-11-27