HydrologicEngineeringCenter / Vortex

data processing utilities
MIT License
28 stars 7 forks source link

`java.awt.HeadlessException` on Linux #103

Open Atreyagaurav opened 1 year ago

Atreyagaurav commented 1 year ago

bash gradlew build -x test

Build fails with java11, but it builds with java 21.

But running bash gradlew importer:run gives:

    Cannot locate tasks that match 'importer:run' as task 'run' not found in project ':importer'.

So, I tried bash gradlew tasks and saw there is "importer" and "run" separately,

Trying bash gradlew importer fails with HeadlessException:

> Task :vortex-ui:importer FAILED
Exception in thread "main" java.awt.HeadlessException: 
No X11 DISPLAY variable was set,
or no headful library support was found,
but this program performed an operation which requires it,

        at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:166)
        at java.desktop/java.awt.Window.<init>(Window.java:553)
        at java.desktop/java.awt.Frame.<init>(Frame.java:428)
        at java.desktop/java.awt.Frame.<init>(Frame.java:393)
        at java.desktop/javax.swing.JFrame.<init>(JFrame.java:180)
        at mil.army.usace.hec.vortex.ui.VortexWizard.<init>(VortexWizard.java:28)
        at mil.army.usace.hec.vortex.ui.ImportMetWizard.<init>(ImportMetWizard.java:47)
        at mil.army.usace.hec.vortex.ui.VortexUi.main(VortexUi.java:25)

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':vortex-ui:importer'.
> Process 'command '/usr/lib/jvm/java-21-openjdk/bin/java'' finished with non-zero exit value 1

P.S. Results from bash gradlew build -x test

> Task :copyJre
Execution optimizations have been disabled for task ':copyJre' to ensure correctness due to the following reasons:
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/bin/jre'. Reason: Task ':copyJre' uses this output of task ':getNatives' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.

> Task :copyNatives
Execution optimizations have been disabled for task ':copyNatives' to ensure correctness due to the following reasons:
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/bin'. Reason: Task ':copyNatives' uses this output of task ':getNatives' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.

> Task :zipLinux
Execution optimizations have been disabled for task ':zipLinux' to ensure correctness due to the following reasons:
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyVortexUi' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyLicense' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyStartScripts' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyNatives' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyJre' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: '/home/gaurav/executables/Vortex-0.11.9/build/distributions/vortex-0.1.0-dev.0.uncommitted'. Reason: Task ':zipLinux' uses this output of task ':copyRuntimeLibs' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings

Execution optimizations have been disabled for 3 invalid unit(s) of work during this build to ensure correctness.
Please consult deprecation warnings for more details.

BUILD SUCCESSFUL in 15s
17 actionable tasks: 8 executed, 9 up-to-date

I also tried to compile it installing gradle 8.4 but it didn't work. So all of the above is when gradle isn't installed in the system.

Atreyagaurav commented 1 year ago

Forgot to add, DISPLAY is set as :0.0. So it shouldn't be that problem. And I run other java GUI programs like HEC-DSSVue, that works.

tombrauer commented 1 year ago

@Atreyagaurav The HeadlessException seems more like a system issue than a Vortex issue. I'm not sure what Linux version you are using but most of our testing has been on Ubuntu 20.04 LTS.

Atreyagaurav commented 1 year ago

Probably. But the instructions only give a way to run it with gradle, and it's not working. Is there a way to run the application from java? or any other way?

Online search on the error isn't helping much.