Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 0.7.0
    • Fix Version/s: 0.8.0
    • Component/s: build, yarn
    • Labels:
      None

      Description

      We were late to the party with Java 7 support so opening this to get a head-start on Java 8 support.

      1. SAMZA-202-draft.patch
        4 kB
        Jakob Homan
      2. SAMZA-202-3.patch
        15 kB
        Chris Riccomini
      3. SAMZA-202-2.patch
        15 kB
        Chris Riccomini
      4. SAMZA-202-1.patch
        15 kB
        Chris Riccomini
      5. SAMZA-202-0.patch
        9 kB
        Chris Riccomini

        Activity

        Hide
        garryturk Garry Turkington added a comment -

        First issue is a Gradle dependency that needs fixed before we can even try to build with JDK 8:
        http://issues.gradle.org//browse/GRADLE-3023

        Show
        garryturk Garry Turkington added a comment - First issue is a Gradle dependency that needs fixed before we can even try to build with JDK 8: http://issues.gradle.org//browse/GRADLE-3023
        Hide
        garryturk Garry Turkington added a comment -

        The causing Gradle issue will be fixed in Gradle 2. So Java 8 support will need wait a while longer.

        Show
        garryturk Garry Turkington added a comment - The causing Gradle issue will be fixed in Gradle 2. So Java 8 support will need wait a while longer.
        Hide
        jghoman Jakob Homan added a comment -

        Started on this, but not done yet.

        • Switched to Gradle 2, which had a build error that looks spurious and was based on an extra parameter
        • The Gradle publish task no longer publishes the md5 or sha1 files; this should probably be handled in another JIRA as it will likely require assistance from the Gradle guys.
        • The license check plugin was using a removed Gradle command. Upgraded to 0.9. This version is better at catching unlicensed files (the css and js files), but still has no way to whitelist individual files. Since we're going to RAT, I've just turned on the treat-these-as-warnings flag, which gives us the same behavior as before.
        • Running into a bigger issue with Jetty and Samza YARN. We bring in Jetty 8 for our web servers but YARN uses Jetty 6 (and is pretty stuck on that version). Java 8 has a problem with the jars between the two as they're signed differently and fails (at least) testAppMasterDashboardShouldStart (with "java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package" At least this is my guess based on initial stack overflowing; this appears to be a common error.

        Need to poke a bit more to confirm it's Jetty that's the culprit, but if so, we'll have a tough time sorting these jars. It will be difficult to sort out the servlets we run in our AM from the AM/YARN logic itself...

        Show
        jghoman Jakob Homan added a comment - Started on this, but not done yet. Switched to Gradle 2, which had a build error that looks spurious and was based on an extra parameter The Gradle publish task no longer publishes the md5 or sha1 files; this should probably be handled in another JIRA as it will likely require assistance from the Gradle guys. The license check plugin was using a removed Gradle command. Upgraded to 0.9. This version is better at catching unlicensed files (the css and js files), but still has no way to whitelist individual files. Since we're going to RAT, I've just turned on the treat-these-as-warnings flag, which gives us the same behavior as before. Running into a bigger issue with Jetty and Samza YARN. We bring in Jetty 8 for our web servers but YARN uses Jetty 6 (and is pretty stuck on that version). Java 8 has a problem with the jars between the two as they're signed differently and fails (at least) testAppMasterDashboardShouldStart (with "java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package" At least this is my guess based on initial stack overflowing; this appears to be a common error. Need to poke a bit more to confirm it's Jetty that's the culprit, but if so, we'll have a tough time sorting these jars. It will be difficult to sort out the servlets we run in our AM from the AM/YARN logic itself...
        Hide
        criccomini Chris Riccomini added a comment -

        I'm adding a note here for google-ability. My macbook just failed to build Samza with this exception:

         ./gradlew clean build -x test
        To honour java settings for this build new JVM is forked. Consider using the daemon http://gradle.org/docs/1.6/userguide/gradle_daemon.html.
        
        FAILURE: Build failed with an exception.
        
        * Where:
        Build file '/Users/criccomi/Code/incubator-samza/build.gradle' line: 109
        
        * What went wrong:
        A problem occurred evaluating root project 'incubator-samza'.
        > Could not create task of type 'ScalaDoc'.
        
        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
        
        BUILD FAILED
        
        Total time: 7.205 secs
        

        This is due to Java 8, apparently:

        http://forums.gradle.org/gradle/topics/enable_to_setup_a_simple_scala_build

        Just making it clear for others in the future.

        Show
        criccomini Chris Riccomini added a comment - I'm adding a note here for google-ability. My macbook just failed to build Samza with this exception: ./gradlew clean build -x test To honour java settings for this build new JVM is forked. Consider using the daemon http://gradle.org/docs/1.6/userguide/gradle_daemon.html. FAILURE: Build failed with an exception. * Where: Build file '/Users/criccomi/Code/incubator-samza/build.gradle' line: 109 * What went wrong: A problem occurred evaluating root project 'incubator-samza'. > Could not create task of type 'ScalaDoc'. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 7.205 secs This is due to Java 8, apparently: http://forums.gradle.org/gradle/topics/enable_to_setup_a_simple_scala_build Just making it clear for others in the future.
        Hide
        criccomini Chris Riccomini added a comment - - edited

        Attaching updated patch. RB located at:

        https://reviews.apache.org/r/23950/

        1. Started from Jakob Homan's draft patch.
        2. Fixed Javadoc HTML entities.
        3. Added Javadocs for other classes to eliminate warnings.
        4. Exclude servlet-api.

        (4) was done because we were getting this error:

        java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package
        	at java.lang.ClassLoader.checkCerts(ClassLoader.java:895)
        	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:665)
        	at java.lang.ClassLoader.defineClass(ClassLoader.java:758)
        	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        	at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
        	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        	at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
        	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        	at java.security.AccessController.doPrivileged(Native Method)
        	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        	at org.apache.samza.webapp.WebAppServer.<init>(WebAppServer.scala:30)
        	at org.apache.samza.job.yarn.SamzaAppMasterService.onInit(SamzaAppMasterService.scala:41)
        	at org.apache.samza.job.yarn.TestSamzaAppMasterService.testAppMasterDashboardShouldStart(TestSamzaAppMasterService.scala:38)
        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        	at java.lang.reflect.Method.invoke(Method.java:483)
        	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
        	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
        	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
        	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
        	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
        	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
        	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
        	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
        	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
        	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
        	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        	at java.lang.reflect.Method.invoke(Method.java:483)
        	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        	at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        	at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        	at java.lang.reflect.Method.invoke(Method.java:483)
        	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        	at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
        	at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
        	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        	at java.lang.Thread.run(Thread.java:745)
        

        It looks like Java 8 is more sensitive about classes from different JARs in the same package. Removing servlet-api 2.5 allows the 3.0 servlet JAR to work properly.

        Since servlet-api 2.5 is coming from YARN, and we're only using YARN's AM client libs (not the RM, NM, history server UI, etc), we should be safe here.

        Show
        criccomini Chris Riccomini added a comment - - edited Attaching updated patch. RB located at: https://reviews.apache.org/r/23950/ Started from Jakob Homan 's draft patch. Fixed Javadoc HTML entities. Added Javadocs for other classes to eliminate warnings. Exclude servlet-api. (4) was done because we were getting this error: java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package at java.lang.ClassLoader.checkCerts(ClassLoader.java:895) at java.lang.ClassLoader.preDefineClass(ClassLoader.java:665) at java.lang.ClassLoader.defineClass(ClassLoader.java:758) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:455) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:367) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.samza.webapp.WebAppServer.<init>(WebAppServer.scala:30) at org.apache.samza.job.yarn.SamzaAppMasterService.onInit(SamzaAppMasterService.scala:41) at org.apache.samza.job.yarn.TestSamzaAppMasterService.testAppMasterDashboardShouldStart(TestSamzaAppMasterService.scala:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355) at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) It looks like Java 8 is more sensitive about classes from different JARs in the same package. Removing servlet-api 2.5 allows the 3.0 servlet JAR to work properly. Since servlet-api 2.5 is coming from YARN, and we're only using YARN's AM client libs (not the RM, NM, history server UI, etc), we should be safe here.
        Hide
        jghoman Jakob Homan added a comment -

        Any reason not to keep the check-all-jdks script? Would make it easier for devs and committers to remember to check this before finishing a patch.

        Show
        jghoman Jakob Homan added a comment - Any reason not to keep the check-all-jdks script? Would make it easier for devs and committers to remember to check this before finishing a patch.
        Hide
        criccomini Chris Riccomini added a comment -

        Attaching latest patch. RB updated as well.

        1. Added top level bin directory for build scripts and whatnot
        2. Moved docs/_tools/* to bin directory.
        3. Copied Jakob Homan's check-all-jdk.sh script to bin.
        4. Added checks for both versions of Scala to script, and renamed to check-all.sh.
        5. Default check-all.sh to use proper JDK versions in Mac OSX when variables are undefined.

        Note that (1) is not for job/admin scripts that should be packaged with Samza jobs (i.e. samza-shell). This directory is just for tooling to help with build/release/documentation.

        Show
        criccomini Chris Riccomini added a comment - Attaching latest patch. RB updated as well. Added top level bin directory for build scripts and whatnot Moved docs/_tools/* to bin directory. Copied Jakob Homan 's check-all-jdk.sh script to bin. Added checks for both versions of Scala to script, and renamed to check-all.sh. Default check-all.sh to use proper JDK versions in Mac OSX when variables are undefined. Note that (1) is not for job/admin scripts that should be packaged with Samza jobs (i.e. samza-shell). This directory is just for tooling to help with build/release/documentation.
        Hide
        criccomini Chris Riccomini added a comment -

        Attaching another patch to upgrade to Scala 2.10.4. I was seeing this error with Scala 2.10.2:

        https://issues.scala-lang.org/browse/SI-7129

        Upgrading to 2.10.4 seems to have fixed it. Couldn't reproduce on 2.9.2, so I assume we're OK there. Ticket only lists 2.10.

        In general, it seems like Scala 2.10's Java 8 support is iffy. There are a lot of bugs on fairly recent versions (2.10.2 and 2.10.3). Let's keep our eye out.

        Show
        criccomini Chris Riccomini added a comment - Attaching another patch to upgrade to Scala 2.10.4. I was seeing this error with Scala 2.10.2: https://issues.scala-lang.org/browse/SI-7129 Upgrading to 2.10.4 seems to have fixed it. Couldn't reproduce on 2.9.2, so I assume we're OK there. Ticket only lists 2.10. In general, it seems like Scala 2.10's Java 8 support is iffy. There are a lot of bugs on fairly recent versions (2.10.2 and 2.10.3). Let's keep our eye out.
        Hide
        criccomini Chris Riccomini added a comment -

        Attaching latest patch. Updated RB.

        1. Add more docs to check-all.sh, per Jakob Homan's feedback.
        Show
        criccomini Chris Riccomini added a comment - Attaching latest patch. Updated RB. Add more docs to check-all.sh, per Jakob Homan 's feedback.
        Hide
        jghoman Jakob Homan added a comment -

        I'm seeing gradle errors against JDK8 when I have either parallel mode or daemon mode on:

        Daemon pid: 59836                                                                                                                                                  [41/1634]
          log file: /Users/jhoman/.gradle/daemon/2.0/daemon-59836.out.log
        ----- Last  20 lines from daemon log file - daemon-59836.out.log -----
        :samza-core_2.9.2:testClasses
        :samza-core_2.9.2:test
        :samza-core_2.9.2:check
        :samza-core_2.9.2:jar
        :samza-serializers_2.9.2:compileJava
        :samza-yarn_2.9.2:compileJava
        :samza-kv_2.9.2:compileJava UP-TO-DATE
        :samza-yarn_2.9.2:compileScala UP-TO-DATE
        :samza-serializers_2.9.2:compileScala
        :samza-kv_2.9.2:compileScala
        :samza-serializers_2.9.2:classes
        :samza-serializers_2.9.2:jar
        :samza-kafka_2.9.2:compileJava UP-TO-DATE
        :samza-kafka_2.9.2:compileScala
        :samza-serializers_2.9.2:compileTestJava UP-TO-DATE
        :samza-serializers_2.9.2:compileTestScala
        [ant:scalac] Element '/Users/jhoman/repos/samza/samza-serializers/build/resources/main' does not exist.
        java.lang.OutOfMemoryError: Java heap space
        java.lang.OutOfMemoryError: Java heap space
        java.lang.OutOfMemoryError: Java heap space
        ----- End of the daemon log -----

        Looks like there may be some issues there, which is unfortunate, but shouldn't block this patch.

        Also, we need to update the .gitignore file to not ignore **/bin, which is currently ignoring the files introduced here. +1 otherwise.

        Show
        jghoman Jakob Homan added a comment - I'm seeing gradle errors against JDK8 when I have either parallel mode or daemon mode on: Daemon pid: 59836 [41/1634] log file: /Users/jhoman/.gradle/daemon/2.0/daemon-59836.out.log ----- Last 20 lines from daemon log file - daemon-59836.out.log ----- :samza-core_2.9.2:testClasses :samza-core_2.9.2:test :samza-core_2.9.2:check :samza-core_2.9.2:jar :samza-serializers_2.9.2:compileJava :samza-yarn_2.9.2:compileJava :samza-kv_2.9.2:compileJava UP-TO-DATE :samza-yarn_2.9.2:compileScala UP-TO-DATE :samza-serializers_2.9.2:compileScala :samza-kv_2.9.2:compileScala :samza-serializers_2.9.2:classes :samza-serializers_2.9.2:jar :samza-kafka_2.9.2:compileJava UP-TO-DATE :samza-kafka_2.9.2:compileScala :samza-serializers_2.9.2:compileTestJava UP-TO-DATE :samza-serializers_2.9.2:compileTestScala [ant:scalac] Element '/Users/jhoman/repos/samza/samza-serializers/build/resources/main' does not exist. java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space ----- End of the daemon log ----- Looks like there may be some issues there, which is unfortunate, but shouldn't block this patch. Also, we need to update the .gitignore file to not ignore **/bin, which is currently ignoring the files introduced here. +1 otherwise.
        Hide
        criccomini Chris Riccomini added a comment -

        Also, you may see this:

        completedobjc[62602]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
        objc[62753]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
        

        This is a known Java 8 issue, and can apparently be safely ignored.

        The bug report claims that the error is benign and should not cause any run-time problems, though one of the comments disagrees with that. In my own experience, I have been able to work without any problems using JDK 1.7.0_60 despite seeing the message.

        Show
        criccomini Chris Riccomini added a comment - Also, you may see this: completedobjc[62602]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. objc[62753]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. This is a known Java 8 issue, and can apparently be safely ignored. http://stackoverflow.com/questions/20794751/class-javalaunchhelper-is-implemented-in-both-one-of-the-two-will-be-used-whic http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8022291 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8031183 The bug report claims that the error is benign and should not cause any run-time problems, though one of the comments disagrees with that. In my own experience, I have been able to work without any problems using JDK 1.7.0_60 despite seeing the message.
        Hide
        criccomini Chris Riccomini added a comment -

        Merged and committed to master.

        Show
        criccomini Chris Riccomini added a comment - Merged and committed to master.

          People

          • Assignee:
            criccomini Chris Riccomini
            Reporter:
            garryturk Garry Turkington
          • Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development