Saya mengalami konflik saat menggunakan dua paket di proyek Java saya - Apache fop dan lesscss. Saya menemukan alasan kesalahan tersebut - lebih sedikit penggunaan kompiler
context.setLanguageVersion(Context.VERSION_1_7);
di konstruktornya, di mana konteks adalah objek kelas org.mozilla.javascript.Context (paket badak). Tapi apache fop telah menambal versi objek ini (http://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-js/1.7), yang tidak mendukung versi bahasa 1.7. Jadi, inilah kumpulan file yang sangat disederhanakan, yang dapat menunjukkan masalah saya. Yang kamu butuhkan adalah
1) pom.xml dengan konten berikut:
<?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) Beberapa servlet pengujian dengan konten berikut:
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);
}
}
Mengompilasi ini menggunakan mvn clean package akan menyebabkan masalah
java.lang.IllegalArgumentException: Versi bahasa buruk: 170
Itu karena Konteks yang ditambal (oleh fop) menggunakan, tetapi saya ingin Konteks asli Rhino, yang mendukung versi 1.7. Jika Anda menghapus ketergantungan fop dari pom.xml, semuanya akan berfungsi dengan baik.
Jadi bagaimana saya bisa menggunakan fop dan lesscss tanpa kesalahan?