Я пытался заставить это работать некоторое время, но пока не получилось.
Я хочу работать с JAVA_HOME
, указывающим на JDK7, но я хочу скомпилировать проект для JVM 5.Я прочитал документацию , я нашел похожих сообщений на SO, но ни одна из них, похоже, не работает в моей настройке.
Я впервые попробовал с настройкойпросто target
и source
но я получил ошибку:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
[ClassName]
не является абстрактным и не переопределяет абстрактный метод getParentLogger()
в CommonDataSource
Насколько я понял, класс был обновлен в JDK 7, и был добавлен дополнительный метод, выдающий ошибку.Мне нужно использовать среду выполнения JDK 5 со старой реализацией, и все должно работать нормально.Итак, я делаю это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<source>1.5</source>
<target>1.5</target>
<compilerArguments>
<bootclasspath>${env.JAVA5_HOME}/jre/lib/rt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
У меня правильно установлен JAVA5_HOME в моей системе, я вижу, как загружаются правильные классы в журнале, но я сталкиваюсь с другой ошибкой:
[loading ZipFileIndexFileObject[c:\Program Files\Java\jdk1.5.0_22\jre\lib\rt.jar(*.class)]]
...
...
[ClassName]
ошибка: пакет javax.crypto
не существует
Что достаточно справедливо, поскольку я не включилjce.jar
(уроки криптографии) в bootclasspath
.Однако есть вещь, которая озадачивает меня.Хотя bootclasspath
содержит только среду выполнения Java 5, у меня есть много библиотек из JRE7 в пути к классам.Они нигде не указаны.
[путь поиска файлов классов: c: \ Program Files (x86) \ Java \ jdk1.5.0_22 \ jre \ lib \ rt.jar, c: \ ProgramФайлы \ Java \ jdk1.7.0_02 \ jre \ lib \ ext \ dnsns.jar, c: \ Program Files \ Java \ jdk1.7.0_02 \ jre \ lib \ ext \ localedata.jar, c: \ Program Files \ Java \jdk1.7.0_02 \ jre \ lib \ ext \ sunec.jar, c: \ Program Files \ Java \ jdk1.7.0_02 \ jre \ lib \ ext \ sunjce_provider.jar, c: \ Program Files \ Java \ jdk1.7.0_02\ jre \ lib \ ext \ sunmscapi.jar, c: \ Program Files \ Java \ jdk1.7.0_02 \ jre \ lib \ ext \ zipfs.jar, ...]
Если я попытаюсьи добавив jce.jar (из JRE5), я возвращаюсь к первой ошибке:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<source>1.5</source>
<target>1.5</target>
<compilerArguments>
<bootclasspath>${env.JAVA5_HOME}/jre/lib/rt.jar${path.separator}${env.JAVA5_HOME}/jre/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
Тип [ClassName] должен реализовывать унаследованный абстрактный метод CommonDataSource.getParentLogger ()
Я также не вижу никаких следов загрузки rt.jar
, но я не получаю ошибку java.lang
not found, поэтому некоторые пути загружаются в путь к классам.
I 'Я исправлю это временно, создав пакетный скрипт, который переписывает JAVA_HOME
перед сборкой и сбрасывает его после войныДС, но я действительно хочу, чтобы это было сделано правильно.Это не похоже на такой крайний случай использования.:)
Что я здесь не так делаю?