Ответ 1
Вы пробовали передать параметры компилятора? [-encoding UTF-8]
Я работаю над проектом, который включает maven, java и clojure. Проблема, с которой я столкнулся, заключается в том, что у меня есть несколько символов UTF-8
в моих исходных файлах clojure, из-за которых мой исходный код не правильно интерпретируется java-компилятором, я как-то получил его, установив переменную среды JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
, но я хочу передать это свойство через MAVEN.
Я уже пробовал установить MAVEN_OPTS=-Dfile.encoding
, но это, похоже, не работает.
Я также попытался настроить конфигурацию для компилятора maven... что-то вроде этого:
<configuration>
<compilerArgument>-Dfile.encoding=UTF8</compilerArgument>
</configuration>
Это тоже не работает.
Я делаю что-то неправильно или есть другой способ.
спасибо,
RD
Хорошо, вот еще несколько деталей. Это мой родительский pom,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding> <! also tried <encoding>UTF8</encoding>
</configuration>
</plugin>
Ничего интересного в детском пом, кроме...
<resources>
<resource>
<directory>src/main/clojure</directory>
</resource>
</resources>
;; clojure фрагмент кода, вызывающий проблемы
(let [char "대"]
(not (empty? (filter #(s/contains? % char) <some-list>)))
;; The list is always empty because I never find a match if I do not set the env. variable
Вы пробовали передать параметры компилятора? [-encoding UTF-8]
Обновление. Основываясь на ваших комментариях, это среда выполнения, а не компиляция. В качестве обходного пути вы можете попробовать избежать символа как unicode.
то есть. измените символ на "\ uXXXX" в файле clojure, где XXXX является точкой Юникода в шестнадцатеричном формате.
Если ваша проблема происходит в ваших модульных тестах. Вы можете настроить плагин surefire, установив свойство argLine. Это позволяет вам установить произвольные параметры JVM в командной строке.
Установили ли вы параметр через Compiler Plugin следующим образом?
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgument>-Dfile.encoding=UTF8</compilerArgument>
</configuration>
</plugin>
</plugins>
Учитывая тот факт, что Clojure действительно кодирует ожидаемую кодировку входных файлов в UTF8 (см. src/jvm/clojure/lang/Compiler.java, loadFile
-method), я удивлен, что использование file.encoding
вообще не имеет никакого эффекта.
Попробуйте добавить это свойство к своему pom UTF-8
Для меня этот код работает без проблем в сидре REPL в Emacs.
;; returns sequence ("대")
(filter #(= % "대") ["대" "한" "민" "국"])
Можете ли вы предоставить код, который испускает ошибку?