ฉันมีข้อขัดแย้งในการใช้สองแพ็คเกจในโปรเจ็กต์ 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 โดยไม่มีข้อผิดพลาดได้อย่างไร