У меня конфликт с двумя пакетами в моем проекте java - apache fop и lesscss. я выяснил причину ошибки - менее компилятор используетorg.apache.xmlgraphics fop + org.lesscss lesscss conflict
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);
}
}
Compiling это с помощью МВНОВ чистого пакета будет вызывать
java.lang.IllegalArgumentException: Плохой язык версия: 170
Это потому, что исправлено (по fop) Контекст используется, но я хочу Rhino original Context, который поддерживает версию 1.7. Если вы удалите fop-зависимость из pom.xml, все будет работать нормально.
Так как я могу использовать как fop, так и lesscss без каких-либо ошибок?