cincheo / jsweet

A Java to JavaScript transpiler.
http://www.jsweet.org
Other
1.46k stars 161 forks source link

NullPointerException during compilation in JSweetConfig and in CandyProcessor.checkCandyVersion when versions differ #702

Closed AlexGeller1 closed 3 years ago

AlexGeller1 commented 3 years ago

Steps to reproduce

$ls ~/.m2/repository/org/jsweet/jsweet-maven-plugin
3.1.0  3.2.0-SNAPSHOT
$unzip jsweet-quickstart-master.zip
$cd jsweet-quickstart-master
$mvn generate-sources
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.jsweet:jsweet-quickstart:jar:3.1.0
[WARNING] 'version' contains an expression but should be a constant. @ org.jsweet:jsweet-quickstart:${jsweet.transpiler.version}, /home/alex/jsweet-bugs/bug1/pom.xml, line 6, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] 
[INFO] --------------------< org.jsweet:jsweet-quickstart >--------------------
[INFO] Building JSweet quick start 3.1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- jsweet-maven-plugin:3.1.0:jsweet (generate-js) @ jsweet-quickstart ---
[INFO] maven version: 3.6.0
java.lang.NullPointerException: inStream parameter is null
    at java.base/java.util.Objects.requireNonNull(Objects.java:246)
    at java.base/java.util.Properties.load(Properties.java:403)
    at org.jsweet.JSweetConfig.<clinit>(JSweetConfig.java:48)
    at org.jsweet.JSweetMojo.execute(JSweetMojo.java:36)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
[INFO] JSweet transpiler version null (build date: null)
[INFO] dependencies=[Dependency {groupId=org.jsweet, artifactId=jsweet-core, version=6.3.0, type=jar}, Dependency {groupId=org.jsweet.candies, artifactId=jquery, version=1.10.0-20170726, type=jar}]
[INFO] candies detection: add project dependency Dependency {groupId=org.jsweet, artifactId=jsweet-core, version=6.3.0, type=jar} => org.jsweet:jsweet-core:jar:6.3.0:compile
[INFO] candies detection: add project dependency Dependency {groupId=org.jsweet.candies, artifactId=jquery, version=1.10.0-20170726, type=jar} => org.jsweet.candies:jquery:jar:1.10.0-20170726:compile
[INFO] all candies artifacts: [org.jsweet.candies:jquery:jar:1.10.0-20170726:compile (1; enabled), org.jsweet:jsweet-core:jar:6.3.0:compile (1; enabled)]
[INFO] candies jars: [/home/alex/.m2/repository/org/jsweet/candies/jquery/1.10.0-20170726/jquery-1.10.0-20170726.jar, /home/alex/.m2/repository/org/jsweet/jsweet-core/6.3.0/jsweet-core-6.3.0.jar]
[INFO] classpath from maven: /home/alex/.m2/repository/org/jsweet/candies/jquery/1.10.0-20170726/jquery-1.10.0-20170726.jar:/home/alex/.m2/repository/org/jsweet/jsweet-core/6.3.0/jsweet-core-6.3.0.jar
[INFO] jsOut: /home/alex/jsweet-bugs/bug1/target/js
[INFO] bundle: null
[INFO] tsOut: /home/alex/jsweet-bugs/bug1/target/ts
[INFO] tsOnly: null
[INFO] tsserver: true
[INFO] declarations: null
[INFO] ignoreDefinitions: null
[INFO] declarationOutDir: null
[INFO] candiesJsOutDir: /home/alex/jsweet-bugs/bug1/webapp/candies
[INFO] ecmaTargetVersion: ES6
[INFO] moduleKind: none
[INFO] sourceMap: null
[INFO] sourceRoot: null
[INFO] compileSourceRootsOverridenull
[INFO] verbose: true
[INFO] veryVerbose: null
[INFO] jdkHome: /usr/lib/jvm/java-11-openjdk-amd64
[INFO] factoryClassName: null
[INFO] ignoredProblems: null
[INFO] javaCompilerExtraOptions: null
[INFO] extraSystemPath: null
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:423 - no configuration file found at /home/alex/jsweet-bugs/bug1/jsweetconfig.json
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:528 - creating transpiler version null (build date: null)
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:530 - current dir: /home/alex/jsweet-bugs/bug1/.
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:531 - base directory: /home/alex/jsweet-bugs/bug1
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:532 - working directory: /home/alex/jsweet-bugs/bug1/.jsweet
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:533 - tsOut: /home/alex/jsweet-bugs/bug1/target/ts - /home/alex/jsweet-bugs/bug1/target/ts
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:534 - jsOut: /home/alex/jsweet-bugs/bug1/target/js - /home/alex/jsweet-bugs/bug1/target/js
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:535 - candyJsOut: /home/alex/jsweet-bugs/bug1/webapp/candies
2021-09-20 10:20:02.002 INFO  JSweetTranspiler:536 - factory: org.jsweet.transpiler.JSweetFactory@387bf2d9
2021-09-20 10:20:02.002 DEBUG JSweetTranspiler:537 - compile classpath: /home/alex/jsweet-bugs/bug1/jsweet_extension:/home/alex/.m2/repository/org/jsweet/candies/jquery/1.10.0-20170726/jquery-1.10.0-20170726.jar:/home/alex/.m2/repository/org/jsweet/jsweet-core/6.3.0/jsweet-core-6.3.0.jar
2021-09-20 10:20:02.002 DEBUG JSweetTranspiler:538 - runtime classpath: /usr/share/maven/boot/plexus-classworlds-2.x.jar
2021-09-20 10:20:02.002 DEBUG JSweetTranspiler:539 - extension directory: /home/alex/jsweet-bugs/bug1/jsweet_extension
2021-09-20 10:20:02.002 INFO  CandyProcessor:123 - candies processor classpath: /home/alex/jsweet-bugs/bug1/jsweet_extension:/home/alex/.m2/repository/org/jsweet/candies/jquery/1.10.0-20170726/jquery-1.10.0-20170726.jar:/home/alex/.m2/repository/org/jsweet/jsweet-core/6.3.0/jsweet-core-6.3.0.jar
2021-09-20 10:20:02.002 INFO  CandyProcessor:141 - extracted candies directory: /home/alex/jsweet-bugs/bug1/webapp/candies
[INFO] source includes: {}
[INFO] source excludes: {}
[INFO] sources paths: [/home/alex/jsweet-bugs/bug1/src/main/java]
[INFO] sources paths from resources: [/home/alex/jsweet-bugs/bug1/src/main/java]
[INFO] sourceFiles=[/home/alex/jsweet-bugs/bug1/src/main/java/quickstart/QuickStart.java]
2021-09-20 10:20:02.002 DEBUG ProcessUtil:67 - extra path: 
2021-09-20 10:20:02.002 INFO  ProcessUtil:138 - cannot find tsc - searching in /home/alex/.jsweet.v3-node_modules
[ERROR] transpilation failed
java.lang.NullPointerException
    at org.jsweet.transpiler.candy.CandyProcessor.checkCandyVersion (CandyProcessor.java:247)
    at org.jsweet.transpiler.candy.CandyProcessor.getCandiesDescriptorsFromClassPath (CandyProcessor.java:219)
    at org.jsweet.transpiler.candy.CandyProcessor.processCandies (CandyProcessor.java:159)
    at org.jsweet.transpiler.JSweetTranspiler.transpile (JSweetTranspiler.java:821)
    at org.jsweet.transpiler.JSweetTranspiler.transpile (JSweetTranspiler.java:794)
    at org.jsweet.AbstractJSweetMojo.transpile (AbstractJSweetMojo.java:681)
    at org.jsweet.JSweetMojo.execute (JSweetMojo.java:43)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.138 s
[INFO] Finished at: 2021-09-20T10:20:02+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.jsweet:jsweet-maven-plugin:3.1.0:jsweet (generate-js) on project jsweet-quickstart: transpilation failed: NullPointerException -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Workaround 1:

$rm -r  ~/.m2/repository/org/jsweet/jsweet-transpiler

Workaround 2:

$unzip jsweet-quickstart-master.zip
$cd jsweet-quickstart-master
$grep jsweet.transpiler.version.3 pom.xml
        <jsweet.transpiler.version>3.1.0</jsweet.transpiler.version>
#patch pom.xml
$grep sweet.transpiler.version.3 pom.xml
        <jsweet.transpiler.version>3.2.0-SNAPSHOT</jsweet.transpiler.version>
lgrignon commented 3 years ago

We apologize for the inconvenience. It logs "cannot find tsc", is tsc executable findable in /home/alex/.jsweet.v3-node_modules ?

Typescript is installed automatically by JSweet, but maybe something went wrong on your machine

lgrignon commented 3 years ago

Is Node installed? Which version please?

AlexGeller1 commented 3 years ago

No problem. Tsc seems to be there (cleaned the directory before compiling) and node is version v10.15.2:

find  ~/.jsweet.v3-node_modules -name  tsc
/home/alex/.jsweet.v3-node_modules/node_modules/typescript/bin/tsc
/home/alex/.jsweet.v3-node_modules/node_modules/.bin/tsc
$node --version
v10.15.2
lgrignon commented 3 years ago

Could you please try again with 3.2.0 SNAPSHOT (forcing dep refresh). I deployed a possible fix :)

AlexGeller1 commented 3 years ago

That fixed it! Thanks for your very timely responses on this and other issues. That is very much appreciated by us.

lgrignon commented 3 years ago

You are welcome :)