Неустранимая ошибка при преобразовании XSL с Java 1.8.0_251 - PullRequest
1 голос
/ 18 июня 2020

При попытке преобразовать таблицу стилей я получаю следующую ошибку от Java 1.8.0_251. Тем не менее, такое же преобразование таблицы стилей без каких-либо проблем с Java 1.8.0_241. Я получаю сообщение об ошибке, когда строка tFactory.newTransformer (stylesheet); выполняется.

Также использование xalan 2.7.2 вместо Java 1.8.0._251 также работает, но эта версия os xalan действительно старая.

Кто-нибудь сталкивался с чем-то подобным? Если да, то как решить?

SimpleNotWorking04.xsl https://drive.google.com/file/d/1pUiMvVtVBmBvCwfPXNW__pXVCiS4c3RV/view?usp=sharing

SimpleWorking04.xsl https://drive.google.com/file/d/1OsOflQzGErvVFVsrmriqa0gbODS2OWi5/view?usp=sharing

Если вы различаете два вышеуказанных файла, это всего лишь одна пустая строка, добавленная в SimpleNotWorking04.xsl, которая дает эту ошибку.

ОБРАТИТЕ ВНИМАНИЕ, что число после «Not targeting» (например, Not targeting 10980 :) изменится в зависимости от содержимого XSL .

com.sun.org.apache.bcel.internal.generic.ClassGenException: Not   
targeting 10980: nop[0](1), but null ERROR:Not targeting 10980:   
nop[0](1), but null

 at    com.sun.org.apache.bcel.internal.generic.BranchInstruction.updateTarget(BranchInstruction.java:217)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.outline(MethodGenerator.java:1738)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.outlineChunks(MethodGenerator.java:1169)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator.getGeneratedMethods(MethodGenerator.java:1899)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator.addMethod(ClassGenerator.java:137)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileNamedTemplate(Mode.java:557)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileTemplates(Mode.java:566)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.Mode.compileApplyTemplates(Mode.java:825)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.compileModes(Stylesheet.java:622)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.translate(Stylesheet.java:735)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:478)
 at    com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:553)
 at    com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:947)
 at    com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:761)
 at simpletest.SimpleTest.main(SimpleTest.java:24) ERROR:  'Could not      compile stylesheet' FATAL ERROR:  'Not targeting 10980:
nop[0](1), but     null'
           :Not targeting 10980: nop[0](1), but null

Код простой, как показано ниже.

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.TransformerConfigurationException;
import java.io.File;

public class SimpleTest {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
      try{
         StreamSource stylesheet = new StreamSource(new File("SimpleNotWorking04.xsl"));
         TransformerFactory tFactory =TransformerFactory.newInstance();  
         Transformer transformer = tFactory.newTransformer(stylesheet);
      }
      catch(TransformerConfigurationException tce) {
          System.out.println("ERROR:"+tce.getMessage());
      }
      catch(Exception e){
         System.out.println("ERROR:"+e.getMessage());
      }
      catch(Throwable t){
         System.out.println("ERROR:"+t.getMessage());
      }
      System.out.println("Done transformation!!");
   }

}

1 Ответ

0 голосов
/ 24 июня 2020

У меня такая же проблема. Я исправил это, разбив большое условие if на несколько условий if.

...