structurizr / lite

Structurizr Lite
https://docs.structurizr.com/lite
MIT License
226 stars 26 forks source link

Starting Structurizr Lite fails with BeanCreationException #116

Closed tigoni closed 7 months ago

tigoni commented 7 months ago

![Uploading Screenshot from 2024-01-24 07-22-31.png…]()

Description

I am on Fedora 39 Linux. Using openjdk 17.0.9 2023-10-17 I built the source code successfully from the instructions on the README (https://github.com/structurizr/lite)

When I run java -Djdk.util.jar.enableMultiRelease=false -jar build/libs/structurizr-lite.war ~/projects/models/workspace.dsl inside the structurizr-lite directory, I get an exception:

[prometheus@skylab structurizr-lite]$ java -Djdk.util.jar.enableMultiRelease=false -jar build/libs/structurizr-lite.war ~/projects/models/workspace.dsl 
2024-01-24T07:07:10.070+03:00  INFO 11968 --- [           main] com.structurizr.lite.StructurizrLite     : Starting StructurizrLite using Java 17.0.9 with PID 11968 (/home/prometheus/projects/structlizr/structurizr-lite/build/libs/structurizr-lite.war started by prometheus in /home/prometheus/projects/structlizr/structurizr-lite)
2024-01-24T07:07:10.093+03:00  INFO 11968 --- [           main] com.structurizr.lite.StructurizrLite     : No active profile set, falling back to 1 default profile: "default"
2024-01-24T07:07:28.646+03:00  WARN 11968 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileSystemWorkspaceComponentImpl' defined in URL [jar:nested:/home/prometheus/projects/structlizr/structurizr-lite/build/libs/structurizr-lite.war/!WEB-INF/classes/!/com/structurizr/lite/component/workspace/FileSystemWorkspaceComponentImpl.class]: Failed to instantiate [com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl]: Constructor threw exception
2024-01-24T07:07:28.647+03:00  INFO 11968 --- [           main] com.structurizr.lite.StructurizrLite     : ********************************************************
2024-01-24T07:07:28.648+03:00  INFO 11968 --- [           main] com.structurizr.lite.StructurizrLite     :  Stopping Structurizr Lite
2024-01-24T07:07:28.649+03:00  INFO 11968 --- [           main] com.structurizr.lite.StructurizrLite     : ********************************************************
2024-01-24T07:07:28.821+03:00 ERROR 11968 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileSystemWorkspaceComponentImpl' defined in URL [jar:nested:/home/prometheus/projects/structlizr/structurizr-lite/build/libs/structurizr-lite.war/!WEB-INF/classes/!/com/structurizr/lite/component/workspace/FileSystemWorkspaceComponentImpl.class]: Failed to instantiate [com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl]: Constructor threw exception
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:322) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:310) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:960) ~[spring-context-6.1.2.jar!/:6.1.2]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.2.jar!/:6.1.2]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[spring-boot-3.2.1.jar!/:3.2.1]
    at com.structurizr.lite.StructurizrLite.main(StructurizrLite.java:51) ~[!/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91) ~[structurizr-lite.war:na]
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53) ~[structurizr-lite.war:na]
    at org.springframework.boot.loader.launch.WarLauncher.main(WarLauncher.java:57) ~[structurizr-lite.war:na]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl]: Constructor threw exception
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:223) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:111) ~[spring-beans-6.1.2.jar!/:6.1.2]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:319) ~[spring-beans-6.1.2.jar!/:6.1.2]
    ... 26 common frames omitted
Caused by: java.lang.RuntimeException: /home/prometheus/projects/models/workspace.dsl should be a directory, not a file - stopping Structurizr Lite.
    at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.start(FileSystemWorkspaceComponentImpl.java:49) ~[!/:na]
    at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.<init>(FileSystemWorkspaceComponentImpl.java:41) ~[!/:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:210) ~[spring-beans-6.1.2.jar!/:6.1.2]
    ... 28 common frames omitted

Steps to reproduce

  1. On Fedora 39 Linux, clone the repos., run the script and build the source as indicated on: https://github.com/structurizr/lite
  2. Run the application using java -Djdk.util.jar.enableMultiRelease=false -jar build/libs/structurizr-lite.war ~/<project_workspace>.dsl
  3. An exception results as shown above.

Screenshot

No response

Code sample

No response

Configuration

No response

Severity

Critical

Priority

I have no budget and there's no rush, please fix this for free

More information

No response