org.apache.xmlgraphics fop + org.lesscss ข้อขัดแย้งของ lesscss

ฉันมีข้อขัดแย้งในการใช้สองแพ็คเกจในโปรเจ็กต์ java ของฉัน - apache fop และ lesscss ฉันพบสาเหตุของข้อผิดพลาด - ใช้คอมไพเลอร์น้อยลง

context.setLanguageVersion(Context.VERSION_1_7);

ในตัวสร้างโดยที่บริบทเป็นวัตถุของคลาส org.mozilla.javascript.Context (แพ็คเกจแรด) แต่ apache fop ได้แก้ไขเวอร์ชันของวัตถุนี้แล้ว (http://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-js/1.7) ซึ่งไม่รองรับเวอร์ชัน 1.7 ภาษา นี่คือชุดไฟล์ที่เรียบง่ายมาก ซึ่งสามารถแสดงให้เห็นปัญหาของฉันได้ สิ่งที่คุณต้องการก็คือ

1) pom.xml โดยมีเนื้อหาดังต่อไปนี้:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <packaging>war</packaging>
    <version>0.1</version>

    <dependencies>
        <dependency>
            <groupId>org.mozilla</groupId>
            <artifactId>rhino</artifactId>
            <version>1.7R4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>fop</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

2) เซิร์ฟเล็ตทดสอบบางตัวที่มีเนื้อหาดังต่อไปนี้:

package main;

import org.mozilla.javascript.Context;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        Context context = new Context();
        context.setLanguageVersion(Context.VERSION_1_7);
    }
}

การคอมไพล์โดยใช้ mvn clean package จะทำให้เกิด

java.lang.IllegalArgumentException: เวอร์ชันภาษาไม่ถูกต้อง: 170

นั่นเป็นเพราะมีการใช้บริบทที่มีการแพตช์ (โดย fop) แต่ฉันต้องการบริบทดั้งเดิมของ Rhino ซึ่งรองรับเวอร์ชัน 1.7 หากคุณลบการพึ่งพา fop ออกจาก pom.xml ทุกอย่างจะทำงานได้ดี

แล้วฉันจะใช้ทั้ง fop และ lesscss โดยไม่มีข้อผิดพลาดได้อย่างไร


person Kirill Smirnov    schedule 19.02.2014    source แหล่งที่มา


คำตอบ (1)


ฉันประสบปัญหานี้ในการผลิตและแก้ไขโดยลบ batik-js ออกจาก classpath

ตามเชิงประจักษ์ org.apache.xmlgraphics 1.7 ทำงานได้ดีกับ Rhino 1.7R4 (ไม่ได้รับการแก้ไข) ซึ่งเป็นสิ่งที่ org.lesscss/lesscss 1.3.3 ขึ้นอยู่กับ ดังนั้น เพียงแยก batik-js ออกจาก build/classpath ของคุณ

person Aaron Iba    schedule 06.03.2014