Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java 8 Required? #55

Closed
jeremylong opened this issue May 27, 2017 · 4 comments
Closed

Java 8 Required? #55

jeremylong opened this issue May 27, 2017 · 4 comments

Comments

@jeremylong
Copy link

Build on travis-ci for OWASP dependency-check fails to post results to Codacy due to the use Java 8 APIs within the codacy-coverage-reporter (or one of its dependencies). The README indicates that Java 7 can be used.

java.time.format.DateTimeFormat was added in Java 1.8.

JDK

OpenJDK 1.7.0_80

Expected Behavior

  1. Code coverage results would get posted to dependency-check on Codacy (here) given the configured .travis.yml

Actual Behavior

The codacy-coverage-reporter fails with the following exception:

2017-05-27 16:25:36,899 %PARSER_ERROR[coloredLevel] com.codacy Parsing coverage data... 
Exception in thread "main" java.lang.NoClassDefFoundError: java/time/format/DateTimeFormatter
	at play.api.libs.json.DefaultWrites$class.$init$(Writes.scala:302)
	at play.api.libs.json.Writes$.<init>(Writes.scala:86)
	at play.api.libs.json.Writes$.<clinit>(Writes.scala)
	at rapture.json.jsonBackends.play.PlayAst$.fromDouble(ast.scala:154)
	at rapture.json.Serializers$$anonfun$intSerializer$1.apply(serializers.scala:37)
	at rapture.json.Serializers$$anonfun$intSerializer$1.apply(serializers.scala:37)
	at rapture.json.BasicJsonSerializer.serialize(serializers.scala:28)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2$$anonfun$apply$3$$anon$3.serialize(CodacyCoverageReporter.scala:142)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2$$anonfun$apply$3$$anon$3.serialize(CodacyCoverageReporter.scala:142)
	at rapture.json.Json$.apply(json.scala:102)
	at com.codacy.api.helpers.FileHelper$.writeJsonToFile(FileHelper.scala:49)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2$$anonfun$apply$3.apply(CodacyCoverageReporter.scala:142)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2$$anonfun$apply$3.apply(CodacyCoverageReporter.scala:135)
	at com.codacy.CodacyCoverageReporter$.com$codacy$CodacyCoverageReporter$$transform(CodacyCoverageReporter.scala:185)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2.apply(CodacyCoverageReporter.scala:134)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1$$anonfun$apply$2.apply(CodacyCoverageReporter.scala:134)
	at com.codacy.parsers.CoverageParserFactory$$anonfun$withCoverageReport$1.apply(CoverageParser.scala:42)
	at com.codacy.parsers.CoverageParserFactory$$anonfun$withCoverageReport$1.apply(CoverageParser.scala:40)
	at scala.Option.map(Option.scala:146)
	at com.codacy.parsers.CoverageParserFactory$.withCoverageReport(CoverageParser.scala:39)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1.apply(CodacyCoverageReporter.scala:134)
	at com.codacy.CodacyCoverageReporter$$anonfun$coverageWithTokenAndCommit$1.apply(CodacyCoverageReporter.scala:128)
	at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1$$anonfun$apply$2.apply(FileHelper.scala:21)
	at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1$$anonfun$apply$2.apply(FileHelper.scala:19)
	at scala.Option.map(Option.scala:146)
	at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1.apply(FileHelper.scala:19)
	at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1.apply(FileHelper.scala:18)
	at com.codacy.api.helpers.FileHelper$$anonfun$withCommit$2.apply(FileHelper.scala:34)
	at com.codacy.api.helpers.FileHelper$$anonfun$withCommit$2.apply(FileHelper.scala:33)
	at scala.Option.map(Option.scala:146)
	at com.codacy.api.helpers.FileHelper$.withCommit(FileHelper.scala:33)
	at com.codacy.api.helpers.FileHelper$.withTokenAndCommit(FileHelper.scala:18)
	at com.codacy.CodacyCoverageReporter$.coverageWithTokenAndCommit(CodacyCoverageReporter.scala:128)
	at com.codacy.CodacyCoverageReporter$.codacyCoverage(CodacyCoverageReporter.scala:161)
	at com.codacy.CodacyCoverageReporter$.main(CodacyCoverageReporter.scala:88)
	at com.codacy.CodacyCoverageReporter.main(CodacyCoverageReporter.scala)
Caused by: java.lang.ClassNotFoundException: java.time.format.DateTimeFormatter
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	... 36 more

Reproducible Test Case

The failing project can be found on github here.

To view the stack trace described above you must go to the travis build that looks like a success found here, scroll to the bottom and then click on the after_success button.

@rtfpessoa
Copy link
Contributor

We recently added rapture as a dependency to abstract the json implementations and it seems to depend on Java 8.
Maybe you can use version 1.0.13 while you cannot migrate to Java 8. Let me know if it works.

rtfpessoa added a commit that referenced this issue May 29, 2017
@jeremylong
Copy link
Author

Thanks, I changed my script to be:

before_install:
  - wget -O ~/codacy-coverage-reporter-assembly.jar https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/1.0.13/codacy-coverage-reporter-1.0.13-assembly.jar 

after_success:
  - java -cp ~/codacy-coverage-reporter-assembly.jar com.codacy.CodacyCoverageReporter -l Java -r build-reporting/target/coverage-reports/jacoco.xml

This works, as long as any new required features don't show up in newer version of the Codacy Coverage Reporter.

As a build plugin author myself I've been very careful to ensure tools work with older versions of Java as people are slow to upgrade. I'm not sure about the sbt space, but in Maven I've used animal-sniffer-maven-plugin to ensure my dependencies don't exceed the minimum Java version I want to support.

Thanks!

@jeremylong
Copy link
Author

To correct my statement above - I use animal sniffer to make sure I don't accidentally call a newer API. I use travis-ci running with Java 7 to ensure I don't upgrade a dependency that exceeds my minimum Java level for a plugin.

Regardless, this issue can be closed.

@rtfpessoa
Copy link
Contributor

We need to check if there is something similar to Scala and improve the release process. Thanks for the tip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants