Eric, http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html
Add file.encoding that way for fork mode. On Tue, Oct 11, 2011 at 8:27 AM, Eric Kolotyluk <eric.koloty...@gmail.com> wrote: > OK, I got things working with > > <properties> > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> > <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding> > <maven.compile.encoding>UTF-8</maven.compile.encoding> > </properties> > > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-compiler-plugin</artifactId> > <version>2.3.2</version> > <configuration> > <!-- <fork>true</fork> --> > <executable>P:\ValueInPrint\Main\jdk\jdk1.5.0_11\bin\javac</executable> > </configuration> > </plugin> > > I could not figure out how to get it to work with the <fork>true</fork> > setting, even after setting MAVEN_OPTS=-Dfile.encoding=utf-8 > > I removed > > <plugin> --> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-surefire-plugin</artifactId> > <version>2.9</version> > <configuration> > <junitArtifactName>junit:junit</junitArtifactName> > <encoding>UTF-8</encoding> > <inputEncoding>UTF-8</inputEncoding> > <outputEncoding>UTF-8</outputEncoding> > <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea > -Dfile.encoding=UTF-8</argLine> > </configuration> > </plugin> > > and things still seem to work correctly, but I should probably leave it in > anyway to be sure in the future. > > To summarize, this whole problem was caused by the compiler not compiling > the literal "λ" correctly so my original code > > if (!lambda.equals("λ")) > > was failing - javac was substituting some other string literal - I did not > figure this out until stepping through the code with the debugger. Somehow > in the Eclipse and JUnit environment it was working correctly sometimes and > not others, but always failing from the command line, so I assumed it was > surefire. I do not think there was any problem with surefire, as using the > default settings seems to work. > > In short my code and unit test were doing exactly what they were supposed to > do to make sure UTF-8 was being handled properly, in particular my unit test > caught the compiler doing the wrong thing in certain situations - it was > just hard for me to believe the compiler was compiling the wrong code and > easier to assume it was surefire or something. > > Maybe in the 22nd century we will not have so many problems with UTF-8 :-) > > Thanks everyone for your help and insight. > > Cheers, Eric > > On 2011-10-10 6:40 PM, Benson Margulies wrote: >> >> Eric, >> >> A couple of points: >> >> 1: Javac has an option to control the input encoding of java source >> files. There's a corresponding configuration option for the >> maven-compiler-plugin. >> >> 2: Adding -Dfile.encoding=utf-8 to MAVEN_OPTS will cause maven, and >> any other piece of java it launches, to use UTF-8 as the default >> encoding. If surefire is forking you'll have to add this to the >> systemPropertyValues. >> >> >> 2011/10/10 Eric Kolotyluk<eric.koloty...@gmail.com>: >>> >>> <forkMode>once</forkMode> >>> >>> Doesn't help. >>> >>> I have some new insight on the problem. I changed my code to >>> >>> if (lambda.length() == 1) >>> { >>> char λ = lambda.charAt(0); >>> if (λ != 'λ') >>> //if (!lambda.equals("λ")) >>> { >>> // UTF-8 sanity check failed! >>> println(System.err, "lambda = '" + lambda + "'"); >>> String message = "UTF-8 encoding problem for " + >>> propertiesResource; >>> println(System.err, message); >>> throw new PropertiesError(message); >>> } >>> } >>> >>> This code works when built in Eclipse, but fails to compile from the >>> command >>> line with >>> >>> [INFO] Compiling 30 source files to >>> P:\Intersystem\main\platform.Java\intersystem-common\target\classes >>> [INFO] ------------------------------------------------------------- >>> [ERROR] COMPILATION ERROR : >>> [INFO] ------------------------------------------------------------- >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[354,38] >>> illegal character: \187 >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[355,37] >>> illegal character: \187 >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[355,42] >>> unclosed character literal >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[355,44] >>> illegal character: \187 >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[355,45] >>> unclosed character literal >>> [ERROR] >>> >>> /Intersystem/main/platform.Java/intersystem-common/src/main/java/com/kodak/intersystem/common/Properties.java:[364,24] >>> illegal start of expression >>> [INFO] 6 errors >>> [INFO] ------------------------------------------------------------- >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD FAILURE >>> >>> I can't figure out why the compiler is failing because I can clearly see >>> >>> [DEBUG] (f) encoding = UTF-8 >>> >>> in the Maven output just before the errors. >>> >>> Anyone have any ideas? Is there some other compiler option I am missing? >>> >>> Cheers, Eric >>> >>> On 2011-10-10 5:23 PM, Kalle Korhonen wrote: >>>> >>>> Different forkMode perhaps? >>>> >>>> >>>> http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#forkMode, >>>> e.g: >>>> <forkMode>once</forkMode> >>>> >>>> Just send the whole keg while you are at it :) >>>> >>>> Kalle >>>> >>>> >>>> 2011/10/10 Eric Kolotyluk<eric.koloty...@gmail.com>: >>>>> >>>>> Actually - that helped - but it's not a stable solution. For some >>>>> reason >>>>> the >>>>> tests pass when run from m2e, but fail when run from the command line. >>>>> I'm >>>>> still trying to figure out what the difference is. >>>>> >>>>> Cheers, Eric >>>>> >>>>> On 2011-10-10 4:41 PM, Kalle Korhonen wrote: >>>>>> >>>>>> A whole case? I *love* inflation. >>>>>> >>>>>> Kalle >>>>>> >>>>>> >>>>>> 2011/10/10 Eric Kolotyluk<eric.koloty...@gmail.com>: >>>>>>> >>>>>>> Awesome Kalle - thanks. >>>>>>> >>>>>>> Where should I send the case of beer? >>>>>>> >>>>>>> Cheers, Eric >>>>>>> >>>>>>> On 2011-10-10 4:00 PM, Kalle Korhonen wrote: >>>>>>>> >>>>>>>> How are you reading in your properties files? By default, latin-1 is >>>>>>>> assumed. Configure your surefire JVM to read files as UTF-8 with: >>>>>>>> <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea >>>>>>>> -Dfile.encoding=UTF-8</argLine> >>>>>>>> >>>>>>>> Kalle >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Oct 10, 2011 at 3:04 PM, Eric Kolotyluk >>>>>>>> <eric.koloty...@gmail.com> wrote: >>>>>>>>> >>>>>>>>> I am having trouble understanding a mystery. >>>>>>>>> >>>>>>>>> I have code that checks my .properties file to make sure that it >>>>>>>>> has >>>>>>>>> not >>>>>>>>> been corrupted after being edited by a non UTF-8 editor. In >>>>>>>>> particular >>>>>>>>> I >>>>>>>>> have a property called lambda = λ and I check to see that it >>>>>>>>> actually >>>>>>>>> does >>>>>>>>> resolve to the correct character. >>>>>>>>> >>>>>>>>> If I run my code from main (my manual unit test) it works. If I run >>>>>>>>> my >>>>>>>>> test >>>>>>>>> from JUnit in Eclipse, it works. But when the same test runs under >>>>>>>>> Maven >>>>>>>>> it >>>>>>>>> fails because lambda = ? >>>>>>>>> >>>>>>>>> When I look in the actual properties file that the test runs with, >>>>>>>>> lambda >>>>>>>>> = >>>>>>>>> λ, but somehow when the code runs it gets lambda = ?. >>>>>>>>> >>>>>>>>> I thought this was maybe a surefire configuration problems so I am >>>>>>>>> using >>>>>>>>> >>>>>>>>> <pluginManagement> >>>>>>>>> <plugins> >>>>>>>>> <plugin> >>>>>>>>> <groupId>org.apache.maven.plugins</groupId> >>>>>>>>> <artifactId>maven-surefire-plugin</artifactId> >>>>>>>>> <version>2.9</version> >>>>>>>>> <configuration> >>>>>>>>> <junitArtifactName>junit:junit</junitArtifactName> >>>>>>>>> <encoding>UTF-8</encoding> >>>>>>>>> <inputEncoding>UTF-8</inputEncoding> >>>>>>>>> <outputEncoding>UTF-8</outputEncoding> >>>>>>>>> <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea</argLine> >>>>>>>>> </configuration> >>>>>>>>> </plugin> >>>>>>>>> </plugins> >>>>>>>>> </pluginManagement> >>>>>>>>> >>>>>>>>> but this makes no difference. Does anyone have any idea why my >>>>>>>>> JUnit >>>>>>>>> test >>>>>>>>> fails running under surefire, but not running under Eclipse? >>>>>>>>> >>>>>>>>> Cheers, Eric >>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>>> >>>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>> >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>> For additional commands, e-mail: users-h...@maven.apache.org >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>> For additional commands, e-mail: users-h...@maven.apache.org >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >> For additional commands, e-mail: users-h...@maven.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org