bioinformatics-ua / dicoogle

Dicoogle - Open Source PACS
http://www.dicoogle.com/
GNU General Public License v3.0
450 stars 133 forks source link

package jdk.nashorn.internal.ir.annotations does not exist #480

Closed adriatic closed 3 years ago

adriatic commented 3 years ago

The complete error message is SearchServlet.java:[33,42] error: package jdk.nashorn.internal.ir.annotations does not exist. This error is generated in the process of installing the Dicoogle PACS from the source code, calling mvn install

Note that this issue is reported whether I run mvn install or `mvn install -Dskip.installnodenpm -Dskip.npm' command.

This failure results with The resulting jar file can be found in "./dicoogle/target". being false.

Is there a workaround ?

adriatic commented 3 years ago

After a bit of research using Visual Studio code on my MBP I believe that I found a workaround - simply comment out this line and the command mvn install results with:

[INFO] --- maven-install-plugin:2.4:install (default-install) @ dicoogle ---
[INFO] Installing /Users/nikolajivancic/work/vetrad/PACS/Dicoogle/dicoogle/dicoogle/target/dicoogle.jar to /Users/nikolajivancic/.m2/repository/pt/ua/ieeta/dicoogle/3.0.3-SNAPSHOT/dicoogle-3.0.3-SNAPSHOT.jar
[INFO] Installing /Users/nikolajivancic/work/vetrad/PACS/Dicoogle/dicoogle/dicoogle/dependency-reduced-pom.xml to /Users/nikolajivancic/.m2/repository/pt/ua/ieeta/dicoogle/3.0.3-SNAPSHOT/dicoogle-3.0.3-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for dicoogle-all 3.0.3-SNAPSHOT:
[INFO] 
[INFO] dicoogle-all ....................................... SUCCESS [ 16.421 s]
[INFO] dicoogle-sdk ....................................... SUCCESS [ 31.315 s]
[INFO] dicoogle-sdk-ext ................................... SUCCESS [  2.655 s]
[INFO] dicoogle ........................................... SUCCESS [ 39.505 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:29 min
[INFO] Finished at: 2021-07-05T20:36:24-04:00
[INFO] ----------------------------------------------------------------------

I am not yet sure that the generated target/dicoogle.jar file is fully functional - I will report back once I run the provided tests

adriatic commented 3 years ago

The next obstacle appears when trying to run the command (note that I copied the file dicoogle.jar to the folder where I am trying to run PACS)

➜  PACS java -jar dicoogle.jar -s
INFO  settings.ServerSettingsManager (ServerSettingsManager.java:90) - Creating server settings file confs/server.xml ...
INFO  plugins.PluginController (PluginController.java:94) - Creating PluginController Instance
INFO  plugins.PluginController (PluginController.java:101) - Creating new Plugin Folder
INFO  plugins.PluginController (PluginController.java:113) - Loaded Local Plugins
INFO  plugins.PluginController (PluginController.java:148) - Creating Local Settings Folder
INFO  plugins.PluginController (PluginController.java:118) - Added default storage plugin
INFO  plugins.PluginController (PluginController.java:231) - Initializing plugin rest interfaces
INFO  plugins.PluginController (PluginController.java:245) - Finished initializing rest interfaces
INFO  plugins.PluginController (PluginController.java:249) - Initializing jetty interface
INFO  server.ControlServices (ControlServices.java:137) - Starting DICOM Storage SCP
INFO  net.NetworkConnection$1 (NetworkConnection.java:631) - Start listening on 0.0.0.0/0.0.0.0:6666
INFO  net.NetworkConnection$1 (NetworkConnection.java:631) - Start listening on 0.0.0.0/0.0.0.0:1045
INFO  server.ControlServices (ControlServices.java:162) - Starting DICOM QueryRetrieve
INFO  server.ControlServices (ControlServices.java:184) - Starting WebServer
INFO  web.DicoogleWeb (DicoogleWeb.java:127) - Starting Web Services in DicoogleWeb. Port: 8080
INFO  server.ControlServices (ControlServices.java:191) - Starting Dicoogle Web
INFO  plugins.PluginController (PluginController.java:126) - Initialized plugins

Instead of seeing the Dicoogle login page after executing the command http://localhost:8080 - I am getting GET http://localhost:8080/ 403 (Forbidden), consistently across all browsers I tried.

Can please help with this it ought to be something simple 😃

Enet4 commented 3 years ago

Hello @adriatic. That first finding is nice. Indeed, there should have been no need to import that Immutable symbol, and can just be removed. It is possible that some JVMs no longer include the Nashorn module, which leads to the compilation error.

The second issue is likely related with recent changes to the web application's build process. Can you please checkout #481 and see if this produces a good dicoogle jar in your setup?

adriatic commented 3 years ago

Thank you @Enet4 for responding. I am a software developer for nearly million years, with no experience in radiology tools, so my presence here is the consequence of helping my daughter who knows a lot about Osirix, PACS and other tools (she is a veterinary radiologist) but knows nothing about software development.

I will check the https://github.com/bioinformatics-ua/dicoogle/pull/481 PR, apply it locally, and let you know the result is.

In addition, I have an idea what caused this 403 response. If I am guessing right, I will let you know as well.

Finally, tell me if you care about a PR that addresses all of the many cosmetic issues like

The value of the field PluginsServlet.logger is not used

I used this PluginsServlet.logger just as an example, this is not the only issue

Enet4 commented 3 years ago

Great to know!

In addition, I have an idea what caused this 403 response. If I am guessing right, I will let you know as well.

It typically emerges when the webapp's assets are missing in the jar, meaning that it did not build successfully. Presenting a different message to the user would make this less confusing, I admit.

Finally, tell me if you care about a PR that addresses all of the many cosmetic issues like

Sure, bringing in a PR to remove unused imports would be appreciated. Especially considering that some of them were causing trouble in some environments.

adriatic commented 3 years ago

Hello, @Enet4 A quick question if I may: The variable depth (the SearchServlet.java) is declared on the line 98 as final int depth - and java compiler flags it as never used.

2021-07-06_22-14-33

At the same time (see the image of the code section from the same file( below)

2021-07-06_22-18-50

this variable is being assigned values to - so we have actually two bugs:

  1. the variable declared as final should be read only
  2. the compiler should not report that this variable is not being used

Note that my VSCode instance is running in the project's root folder, so the VSCode editor has been able to pick the compiler messages but I am not sure that such pickup is correct, since I compiled the code using the command mvn install

Several questions, as I would like to know whether is this "pre-alpha code" that can have syntax errors / logical bugs - the screenshot below shows just the first few of the total of 506 issues for just this one file

2021-07-06_22-31-01

If this code is not ready for a trivial cleanup of unused code, then I would be wasting my time trying to just use my knowledge of Java without a good understanding of the program's logic

adriatic commented 3 years ago

Can you tell me what is the intent to build Dicoogle? I used the command mvn install while you write about using npm. I would be happy to use npm - and update the the README.md

Enet4 commented 3 years ago

Thank you for bringing these matters to our attention. Some of the documentation became outdated as we began transitioning to Dicoogle 3 more recently. I have pushed an updated readme file in #483. In any case, the recommended source of guidance to Dicoogle users and developers at this time is the Dicoogle Learning Pack, which also has a section on Building Dicoogle from sources.

As for the raised topics:

adriatic commented 3 years ago

I made significant progress by shrinking the number VSCode reported issues / warnings (including the "intriguing" case of the depth variable). The "fix" is simple: i removed all traces of Visual Studio Code, Java SDK and everything else that I believe is needed to develop Java apps on OSX. Then in reinstalled "all java parts" following the Getting Started with Java in VS Code. Lastly I cloned dev branch of Dicoogle and built Dicoogle as stated in Building Dicoogle

Tomorrow I hope to go through the Setup section

adriatic commented 3 years ago

The build from source succeded:

[INFO] 
[INFO] --- license-maven-plugin:2.4:check (default) @ dicoogle ---
[INFO] Checking licenses...
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ dicoogle ---
[INFO] Installing /Users/nikolajivancic/work/vetrad/PACS/dicoogle/dicoogle/target/dicoogle.jar to /Users/nikolajivancic/.m2/repository/pt/ua/ieeta/dicoogle/3.0.3-SNAPSHOT/dicoogle-3.0.3-SNAPSHOT.jar
[INFO] Installing /Users/nikolajivancic/work/vetrad/PACS/dicoogle/dicoogle/dependency-reduced-pom.xml to /Users/nikolajivancic/.m2/repository/pt/ua/ieeta/dicoogle/3.0.3-SNAPSHOT/dicoogle-3.0.3-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for dicoogle-all 3.0.3-SNAPSHOT:
[INFO] 
[INFO] dicoogle-all ....................................... SUCCESS [  2.757 s]
[INFO] dicoogle-sdk ....................................... SUCCESS [  3.209 s]
[INFO] dicoogle-sdk-ext ................................... SUCCESS [  1.368 s]
[INFO] dicoogle ........................................... SUCCESS [ 17.656 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  25.083 s
[INFO] Finished at: 2021-07-07T19:02:41-04:00
[INFO] ------------------------------------------------------------------------

The Setup may need some additional information about Set up the Dicoogle Platform:

In particular, Installing plugins mentions lucene.jar and filestorage.jar plugins leaving the explanation of how to get these plugins. There is the download page on a different site, which has several variants of downloading data, so I am presuming that this is the way to get these two plugins. While I am waiting for these plugins, I suggest to improve the
Installing plugins by explicitly stating this.

Running mvn install command does not result in the creation of lucene.jar and filestorage.jar plugins (as mentioned in the above paragraph), however it does result with two variants of dicoogle.jar, significantly different in size (Can you explain that difference, please, and which one should I use)

2021-07-08_12-14-01

In conclusion, I was unable to run Dicoogle, because I need lucene.jar and filestorage.jar plugins, which I hope to get by requesting them in [Download form])https://dicoogle.com/downloads/)

Enet4 commented 3 years ago

That is correct, the lucene and filestorage plugins are separate projects which can be downloaded from the official website, both binaries (as jars ready to be deployed) and source code. This is described a few sections earlier, in Obtain Dicoogle and Plugins, but perhaps we can remind the readers again at that point.

As the learning pack is also open-source, improvements to any of these pages can be suggested by clicking the pencil on top of each page (or through a typical Git/GitHub workflow). Your feedback is much appreciated!

Capture-dicoogle-learning-pack-improve

adriatic commented 3 years ago

As the learning pack is also open-source, improvements to any of these pages can be suggested by clicking the pencil on top (or through a typical Git/GitHub workflow)

Eduardo, I am well aware of that - and I am not yet sure that my understanding of Dicoogle is sufficient to do more than to warn about "rough patches". In my perception Dicoogle is a big project, the code is very well written but the team kept adding functionality (using the "metadata" maintained in their heads) without updating the global view of the whole beast.

I am a very big fan of Visual Studio Code and I am not sure whether anyone on your team uses this tool.

bastiao commented 3 years ago

In my perception Dicoogle is a big project, the code is very well written but the team kept adding functionality (using the "metadata" maintained in their heads) without updating the global view of the whole beast.

Hi @adriatic. Thanks for contributing with feedback. I would like to have more hits about what you mean by "updating the global view of the whole beast". To be honest, I would say the opposite, we tried to focus on big picture, rahter than small components. So I'm truely interested to receive your opinion.

From my side, I used most of the times InteliJ or to build directly maven component/plugins directly in terminal.

Let us know if you have any problems running it and if you feel any lacks for particular use cases. Good luck!

adriatic commented 3 years ago

Hello @bastiao

I would like to have more hits about what you mean by "updating the global view of the whole beast". To be honest, I would say the opposite, we tried to focus on big picture, rahter than small components. So I'm truely interested to receive your opinion.

My introduction to Dicoogle is very different from yours and that explains my completely different view of the Dicoogle. My interest was to create a PACS application (from (open) source, so I can intervene if something needs small adaptation) for a friend who is building a small vet practice. Once I read a bit through the architecture and code, I got excited about trying to get a Mac based PACS which keeps its data in the local cloud - NAS.

It's the lack of information for a "developer profile" (where I am interested in how to build this app - not how to use it) that slows me down. Regardless of whether your intent is to only "feed" the app users (not app developers), I would love to be able to augment your documentation by pointing out what I found as insufficient for my task.

In order to create such information I need to spent more time writing it as I want to do at least a decent job, which require a bit of thinking. So, give me some time, without forgetting why am I here 😄 .

For starters let me ask whether you care to have a centrally located document that discusses how to build the app (enumerating supported tools (IntelliJ, Visual Studio Code, Eclipse, etc, where I would offer to provide information on VSCode, expecting that other users can describe their preferred tools) I would start with Getting Started with Java in VS Code and add "Building Dicoogle on OSX specific remarks"

My open issue is with the dicoogle-plugins-sources-v3.0.0.zip I received, where I expected a few README.md files that explains how to build the plugins from the (included) source as well as already built these plugins (.jar files)

2021-07-08_19-00-05

The term centrally located document would address the current situation where pars of that information are "dispersed" amongst several sites (https://bioinformatics-ua.github.io/dicoogle-api/, https://bioinformatics-ua.github.io/dicoogle-learning-pack/ and https://github.com/bioinformatics-ua/dicoogle#readme.

Perhaps the simplest solution would be to rewrite this README.md so it is consistent with the information in the Learning Pack and to prevent the duplication of data make this README.md a summary of the Learning Pack and include the reference to Learning Pack

bastiao commented 3 years ago

Great! Thanks for your feedback. We will keep trying to improve it, and hopefully, the community can also contribute with it.