structurizr / lite Goto Github PK
View Code? Open in Web Editor NEWStructurizr Lite
Home Page: https://docs.structurizr.com/lite
License: MIT License
Structurizr Lite
Home Page: https://docs.structurizr.com/lite
License: MIT License
I ran Structurizr Lite using Docker compose. I share my docker-compose.yaml here in case anyone else finds it useful.
version: '3'
services:
structurizr:
container_name: system-architecture-structurizr
image: structurizr/lite
ports:
- "8080:8080"
volumes:
- "./src:/usr/local/structurizr:rw"
First of all: I love the approach! Awesome tool!
I just bumped into an issue (quite possible that I am not seeing some option).
The Generated offline HTML Page is not zoomable.
This makes Diagrams with 2 vertically "stacked" elements huge.
Is there some way to either fit the diagrams to the viewport or make them zoomable?
In previous versions of Structurizr Lite, it was possible to load an HTML file with all diagrams from the workspace. It seems that this option has been removed. I used this feature in the past to quickly send intermediate results to business users not familiar with docker. Should I publish workspaces to StructurizR On-Prem instead? Also, I am wondering why this feature was removed.
If I zoom into a diagram, how do I then move the diagram with my mouse? Usually I press space and can then "grab" the canvas in similar programs. I have not found any modifier key to do so.
Using just the scrollbars to move the canvas horizontally and vertially is quite annoying.
With a set of DSL files with more than 10 diagrams, the 10th diagram occupies position 2 in the left hand diagram list
1, create a model with more than 9 diagrams.
No response
No response
Structurizr Lite
Minor
Medium
I have no budget, please fix this for free
No response
Hello Simon,
I'm experiencing a strange behavior with Structurizr Lite. I have the following folder structure:
.
├── architecture
│ ├── decisions
│ │ └── 0001-record-architecture-decisions.md
│ ├── documentation
│ │ └── 01-introduction.md
│ ├── workspace.dsl
This is the content of the files:
WORKSPACE.DSL
workspace "VAS Platform 2.x" "Architecture of the VAS Platform" {
# Disabling implied relationships
!impliedRelationships false
# Structurizr specific references
!docs documentation
!adrs decisions
model {
#####################
# Internal Entities #
#####################
enterprise "VAS Ecosystem" {
ss_vasPlatform = softwareSystem "VAS Platform"
}
}
views {
##########################################
# Common styles for common look and feel #
##########################################
#LND-01
systemLandscape "lnd01" {
title "LND-01: VAS Platform 2.x High Level Architecture"
description "This diagram presents the whole echosystem of the VAS Platform from a logical point of view"
include *
exclude "element.tag==hidden"
autoLayout "lr"
}
}
}
0001-record-architecture-decisions.md (created with ADR tool)
# 1. Record architecture decisions
Date: 2021-01-01
## Status
Accepted
## Context
We need to record the architectural decisions made on this project.
## Decision
We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions).
## Consequences
See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools).
01-introduction.md
## Overview and Goals
---
The high level architecture of the system, with regards to functionalities and logical components, is illustrated in the diagram below:
![](embed:lnd01)
I start Structurizr Lite from the root with the following command:
docker run -d -it --rm -p 8080:8080 -v $PWD/architecture:/usr/local/structurizr --name structurizr structurizr/lite:latest
Then I can see the diagrams, the documentation, but I cannot see the decisions.
This is a simplified version of my model, which is presented correctly on the Cloud.
I also have the v1.x
of the model (same folder structure), which works fine locally up to version 2875, but refuses to load on any version newer than that.
docker run -d -it --rm -p 8080:8080 -v $PWD/architecture:/usr/local/structurizr --name structurizr structurizr/lite:2875
==> GOOD
docker run -d -it --rm -p 8080:8080 -v $PWD/architecture:/usr/local/structurizr --name structurizr structurizr/lite:latest
==> BAD
Funny enough, the simplified version I present here does not work at all on version 2875.
Both models are fine on the Cloud.
Thanks for helping
Currently, themes only support URLs for downloading the themes file. Sometimes due to security and privacy, uploading these files to a public web server is impossible.
Add support for themes files stored in the data directory.
themes https://static.structurizr.com/themes/microsoft-azure-2021.01.26/theme.json ./theme.json
Much like in #19 I am using manual layouts. I am not experiencing their complete loss of position. Moving blocks and components around is saved fine. However, any edits to the line locations and shape is (for my complex diagrams) lost every single time the page is loaded. This makes structurizr somewhat unusable as I cannot make the lines correct at all.
Reproduction:
workspace {
model {
ExternalSystem = softwareSystem "External System"
System = softwareSystem "The Project"
ExternalSystem -> System
System -> ExternalSystem
}
views {
systemContext System "SystemContext" "Top Level Context" {
include *
}
}
}
Launch structurizr lite:
docker run -d --rm -p 8080:8080 -v ${PWD}:/usr/local/structurizr structurizr/lite:2920
Move the blocks and also change the line locations. Note that with this simple model, sometimes the line positions are saved, sometimes they are lost. The simple edit that is always lost is to remove the elbow so that the lines are straight and overlapping.
Ensure that the save has completed
Press f5 to reload the page. The block positions are saved, but the lines positions are lost:
I am attempting to use an image view with Structurizr Lite.
However, it complains that there is an unexpected token.
2023-06-19 10:41:07.794 ERROR 1 --- [nio-8080-exec-1] s.l.c.w.FileSystemWorkspaceComponentImpl : com.structurizr.dsl.StructurizrDslParserException: Unexpected tokens (expected: systemLandscape, systemContext, container, component, filtered, dynamic, deployment, custom, styles, theme, themes, branding, terminology, properties) at line 22: image component1 {
No response
workspace {
model {
softwareSystem "Software System" {
container = container "Container" {
component1 = component "Component 1"
}
}
}
views {
properties {
"mermaid.url" "https://mermaid.ink"
"mermaid.format" "svg"
}
component container {
include *
autoLayout lr
}
image component1 {
mermaid https://raw.githubusercontent.com/structurizr/dsl/master/docs/cookbook/image-view/component1.mmd
title "Class diagram for Component1"
}
}
}
### Configuration
_No response_
### Severity
Major
### Priority
Low
### Resolution
I have no budget, please fix this for free
### More information
_No response_
just pulled the latest docker image and could not start the project. When I use the tag 3000 it works (didn't try all the version in between).
Didn't change anything since earlier when it worked, same compose file, same dsl file etc...
2023-03-31 12:08:31 2023-03-31T10:08:31.960Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Starting StructurizrLite using Java 17.0.5 with PID 1 (/usr/local/structurizr-lite.war started by root in /)
2023-03-31 12:08:31 2023-03-31T10:08:31.965Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : No active profile set, falling back to 1 default profile: "default"
2023-03-31 12:08:36 2023-03-31T10:08:36.061Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Started StructurizrLite in 4.58 seconds (process running for 5.297)
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : _____ _ _ _
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : / | | | | ()
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : | ( | |_ _ __ _ _ | | _ _ _ __ _ _____ __
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : _ | | '| | | |/ | | | | | '| | / '|
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : __) | || | | || | (| || || | | | |/ /| |
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : |/ _|| _,|_|_|_,|| |/|_|
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.064Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Structurizr Lite
2023-03-31 12:08:36 2023-03-31T10:08:36.066Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - build: 3041 (2023-03-31T08:35:17Z
2023-03-31 12:08:36 2023-03-31T10:08:36.066Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-java: v1.24.0
2023-03-31 12:08:36 2023-03-31T10:08:36.074Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-dsl: v1.30.0
2023-03-31 12:08:36 2023-03-31T10:08:36.075Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-import: v1.4.1
2023-03-31 12:08:36 2023-03-31T10:08:36.075Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.075Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Workspace path: /usr/local/structurizr
2023-03-31 12:08:36 2023-03-31T10:08:36.075Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Workspace filename: workspace[.dsl|.json]
2023-03-31 12:08:36 2023-03-31T10:08:36.075Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : URL:
2023-03-31 12:08:36 2023-03-31T10:08:36.076Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Auto-save interval: 5000ms
2023-03-31 12:08:36 2023-03-31T10:08:36.076Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Auto-refresh interval: 0ms
2023-03-31 12:08:36 2023-03-31T10:08:36.084Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : dot: available
2023-03-31 12:08:36 2023-03-31T10:08:36.084Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-03-31 12:08:36 2023-03-31T10:08:36.084Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : MIT License
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Copyright (c) 2023 Structurizr Limited
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Permission is hereby granted, free of charge, to any person obtaining a copy
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : of this software and associated documentation files (the "Software"), to deal
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : in the Software without restriction, including without limitation the rights
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : copies of the Software, and to permit persons to whom the Software is
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : furnished to do so, subject to the following conditions:
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : The above copyright notice and this permission notice shall be included in all
2023-03-31 12:08:36 2023-03-31T10:08:36.085Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : copies or substantial portions of the Software.
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : SOFTWARE.
2023-03-31 12:08:36 2023-03-31T10:08:36.086Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-03-31 12:08:39 2023-03-31T10:08:39.940Z WARN 1 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.structurizr.lite.web.ApiController#error(HttpServletResponse, String)
2023-03-31 12:08:39
2023-03-31 12:08:39 java.lang.IllegalStateException: Could not resolve parameter [1] in public com.structurizr.lite.web.ApiResponse com.structurizr.lite.web.ApiController.error(jakarta.servlet.http.HttpServletResponse,java.lang.String): No suitable resolver
2023-03-31 12:08:39 at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:178) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:148) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:413) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:74) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1341) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1152) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2023-03-31 12:08:39
2023-03-31 12:08:39 2023-03-31T10:08:39.945Z ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'] with root cause
2023-03-31 12:08:39
2023-03-31 12:08:39 java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
2023-03-31 12:08:39 at com.structurizr.dsl.plugins.mermaid.MermaidEncoderPlugin.run(MermaidEncoderPlugin.java:22) ~[na:na]
2023-03-31 12:08:39 at com.structurizr.dsl.PluginDslContext.end(PluginDslContext.java:28) ~[structurizr-dsl-1.30.0.jar!/:1.30.0]
2023-03-31 12:08:39 at com.structurizr.dsl.StructurizrDslParser.endContext(StructurizrDslParser.java:964) ~[structurizr-dsl-1.30.0.jar!/:1.30.0]
2023-03-31 12:08:39 at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:848) ~[structurizr-dsl-1.30.0.jar!/:1.30.0]
2023-03-31 12:08:39 at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:128) ~[structurizr-dsl-1.30.0.jar!/:1.30.0]
2023-03-31 12:08:39 at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:122) ~[classes!/:na]
2023-03-31 12:08:39 at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:88) ~[classes!/:na]
2023-03-31 12:08:39 at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspace(FileSystemWorkspaceComponentImpl.java:156) ~[classes!/:na]
2023-03-31 12:08:39 at com.structurizr.lite.web.ApiController.getWorkspace(ApiController.java:37) ~[classes!/:na]
2023-03-31 12:08:39 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
2023-03-31 12:08:39 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
2023-03-31 12:08:39 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
2023-03-31 12:08:39 at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
2023-03-31 12:08:39 at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
2023-03-31 12:08:39 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
2023-03-31 12:08:39 at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2023-03-31 12:08:39
run docker compose up -d
with
version: '3.3'
services:
structurizer:
container_name: structurizr
pull_policy: always
image: structurizr/lite:latest
ports:
- 8080:8080
volumes:
- .:/usr/local/structurizr
restart: always
No response
No response
No response
Critical
Low
I have no budget, please fix this for free
No response
The link: https://static.structurizr.com/download/structurizr-lite.war was not accessible.
No response
No response
Minor
Low
I have no budget, please fix this for free
No response
I am not able to use scripts in structurizr lite. I tried inline, file, kts, kt, js.. always get the same error:
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider kotlin.script.experimental.jsr223.KotlinJsr223DefaultScriptEngineFactory could not be instantiated
2023-02-14 16:25:56.721 ERROR 1 --- [nio-8080-exec-3] s.l.c.w.FileSystemWorkspaceComponentImpl : com.structurizr.dsl.StructurizrDslParserException: Error running inline script, caused by java.lang.RuntimeException: Could not load a scripting engine for extension "kts" at line 13: }
This is the version I'm using.
2023-02-14 16:25:21.727 INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - build: 2948 (2023-02-14T07:59:41Z
2023-02-14 16:25:21.727 INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-java: v1.19.0
2023-02-14 16:25:21.734 INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-dsl: v1.25.0
2023-02-14 16:25:21.735 INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-documentation: v1.1.1
Did I misunderstand something?
Hello,
Thanks for the effort that goes into maintaining + updating this project. We've been using the docker images to keep all our project docs together and it's been working great!
In the latest docker images it seems that we can't load ADRs or documentation though unfortunately.
If we peg the image tag to 3000 it seems to work great. 3001 throws an error in the console (but still appears to work) and 3002 doesn't load the ADRs & Documentation at all.
We have pegged our container image to 3000 and thats helped us continue for now, so I'm raising for awareness!
Thanks again
Hi,
Is there a way to add support for mermaid diagrams in the markdown files for documentation?
I would like to add some process documentation and explanations about the data flows etc.
Thanks!
sequenceDiagram
User->>System A: call
System A ->> System B: get data
Hi all,
I’m using structurizr lite to generate documentation for my project with the documentation markdown feature. In my diagrams and model I’m using perspectives to highlight specific contexts. Now I want to embed diagrams in my markdown files with a specific perspective, but I cannot find any way to do so.
Is there an option to embed a diagram in markdown with a perspective selected?
Thanks!
Jeffrey
Following the getting started guide via the prebuild image yields the following error:
$ docker pull structurizr/lite
Using default tag: latest
Error response from daemon: manifest for structurizr/lite:latest not found: manifest unknown: manifest unknown
Hi,
I've been using structurizr lite using docker via Windows Subsystem for Linux. It's generally been working really well, the one problem that I've had is regarding the json layout file. I don't tend to use autolayout, except for the most simple diagrams. For more complex diagrams I manually position the components on the diagram. However I've been finding that the layout file is getting frequently "reset" so that all of the diagram components get positioned back in the top left hand corner. I'm working around this by creating local git repos so that i can revert the json when it occurs but i'm ending up with lots of unnecessary local repos, and sometimes i forget to commit my changes. It typically seems to happens when I stop working on the diagram for a few hours and then go back to it.
Can you think what might be the cause? I was wondering whether it could be related to the running docker using WSL? My colleagues are all experiencing the same behaviour so I don't think its something specific/unusual to my setup.
Thanks,
Mark
First:
Congratulations for the system, it's really great to use a tool that has a well-defined purpose and for which it is perfectly suited.
The issue:
The business areas should be able to visualize the models without being able to manipulate them.
Could be implemented a parameter in the instance configuration that blocks editing actions on the interface in all views, hiding the buttons, similar to what happens when the view uses autolayout?
Eg: structurizr.readOnly
In order not to affect the default behavior of the application, the default value could be equal to false
Finally:
I'm sure that a lot of people who use Structurizr would like to be able to contribute by coding, are there any plans to allow other devs to participate more actively in the project?
Thank you very much
I'm reporting this here, since the problem occurred for me with lite. The source may well reside in other parts of the ecosystem.
The problem is the following: I have a workspace definition (JSON) where the workspace has no documentation key. This is legal according to the OpenAPI spec which does not require any of the workspace keys. I can upload this workspace definition and download it again without problem to an on-premise instance. However, when I try to view the workspace using structurizr lite, there is an error because null
has no method getSections
. I can circumvent this problem by adding "documentation": {} to the workspace JSON. I understand why this happens but it seems like it shouldn't be an issue ideally.
getSections
on the null
object.No response
No response
Docker image structurizr/lite:latest
Minor
Low
I have no budget, please fix this for free
This problem is easily avoided but it still seems that either the documentation key should be required, or its absence should be handled.
Structurizr requires browser automation to export diagrams. I attempted to set this up in a Docker compose file that would launch Structurizr lite and then a puppeteer container to export the images, but leave Structurizr lite running for use directly to edit the manual layouts. Docker compose allows you to setup a network and have one service call another one by name. However, this name is not available from outside.
If I call it from a browser at http://localhost:8080 first, then the Puppeteer container fails because the pages return absolute paths to http://localhost:8080. If Puppeteer calls it first, then using my local browser fails because it returns absolute paths to http://structurizr:8080, which only exists inside the Docker world.
This appears to be caused by this code. Better approaches would be to always return the URL that was used for the particular incoming call without saving the URL for use later, or to return relative paths.
I'm not sure if this is the right place to ask, but how can one run the docker container in an automated way to generate the diagrams as they are displayed on the web? Since I need to include some diagrams in the documentation, it would be nice if I could automate the generation of the files so that they land in the places where they belong in the folder structure rather then opening it, downloading the images, etc...
Edit:
And no, I don't want to use PlantUML because the output is not the same.
I got in touch via slack to ask about a error I was receiving whilst trying to use the !docs
directive.
Here's the slack channel link
https://structurizr.slack.com/archives/C017K4GS0SY/p1680023469824089
I engaged in a disussion/conversation/troubleshoot with @simonbrowndotje and after some exchange I achieved my result to use correctly the !docs
directive.
The !include
directive interferes on the path relativity to be used in the !docs
directive whilst using some more complex folder architectures and DRY files.
I simplified my case and recreated the behavior on this zip
example.zip
workspace.dsl
model.dsl
some_docs_folder/
1.md
folder_1_file_include/
folder_2_file_include/
container1.dsl
folder_2_folder_include/
container2.dsl
system1.dsl
folder_1_folder_include/
folder_2_file_include/
container3.dsl
folder_2_folder_include/
container4.dsl
system1.dsl
The goal is to be able to use the directive !docs some_docs_folder
on every DSL file on the folder hierarchy.
But on
folder_1_file_include/system1.dsl
the directive is working with !docs "../some_docs_folder"
folder_1_folder_include/system2.dsl
the directive is working with !docs "some_docs_folder"
The !include
directive works differently for FILE INCLUDE and FOLDER INCLUDE. There's some shenanigans happening with the way the files/paths are processed.
So even if the files are on the same FOLDER HIERARCHICAL level the !docs
directive need to be used with different file path relativity!
The container3 and container4 DSL's are not possible to be declared using this folder hierarchy and includes.
The reason is that the FOLDER INCLUDE does a recursive include inside the folder. That's a great tool and behavior. But for some cases it's not so great. The way it is, the include folder directive should be used only on LEAF DSL files.
by leaf I mean a DSL file that WILL NOT include another file.
The goal would be:
folder_1_folder_include
container3.dsl
and container4.dsl
on system2.dsl
!include_folder_not_recursively
directive to allow this type of modelling/doc architecture!Probably, because of the hardcoded date for the cookie.
I can suggest that for such user data the Local Storage might be a better fit.
$('#hideDiagramEditorIntroductionCheckbox').click(function() {
if ($('#hideDiagramEditorIntroductionCheckbox').is(':checked')) {
document.cookie = "structurizr.hideDiagramEditorIntroduction=true; expires=31 Dec 2022 23:59:59 UTC; path=/";
} else {
document.cookie = "structurizr.hideDiagramEditorIntroduction=; expires=01 Jan 1970 00:00:00 UTC; path=/";
}
});
System Info:
Windows 10
Java version: zulu19.32.13-ca-jdk19.0.2-win_x64
structurizr-lite version: structurizr-lite-3033
structurizr failed to start in my machine with below error.
Could someone help on this issue? Thanks.
java -jar C:\Users\dengzhl9\Downloads\structurizr-lite-3033.war .
2023-03-21T15:32:37.568+08:00 INFO 1756 --- [ main] com.structurizr.lite.StructurizrLite : Starting StructurizrLite using Java 19.0.2 with PID 1756 (C:\Users\dengzhl9\Downloads\structurizr-lite-3033.war started by dengzhl9 in D:\1-project\1-biz\numaris\Mainline\DEV\Dragon\src\WebOrganizer\doc\c4)
2023-03-21T15:32:37.573+08:00 INFO 1756 --- [ main] com.structurizr.lite.StructurizrLite : No active profile set, falling back to 1 default profile: "default"
2023-03-21T15:32:41.304+08:00 ERROR 1756 --- [ main] org.apache.catalina.core.ContainerBase : A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:252) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:926) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:488) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:210) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:183) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:578) ~[spring-context-6.0.6.jar!/:6.0.6]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.4.jar!/:3.0.4]
at com.structurizr.lite.StructurizrLite.main(StructurizrLite.java:50) ~[classes!/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) ~[structurizr-lite-3033.war:na]
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 35 common frames omitted
Caused by: java.lang.IllegalStateException: zip file closed
at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:832) ~[na:na]
at java.base/java.util.zip.ZipFile.getManifestName(ZipFile.java:1058) ~[na:na]
at java.base/java.util.zip.ZipFile$1.getManifestName(ZipFile.java:1101) ~[na:na]
at java.base/java.util.jar.JarFile.getManEntry(JarFile.java:950) ~[na:na]
at java.base/java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:1013) ~[na:na]
at java.base/java.util.jar.JarFile.isMultiRelease(JarFile.java:387) ~[na:na]
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:68) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:41) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:328) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:271) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:234) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:83) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5144) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 41 common frames omitted
2023-03-21T15:32:41.311+08:00 ERROR 1756 --- [ main] org.apache.catalina.core.ContainerBase : A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during start
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:252) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:926) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:488) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:210) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:183) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:578) ~[spring-context-6.0.6.jar!/:6.0.6]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.4.jar!/:3.0.4]
at com.structurizr.lite.StructurizrLite.main(StructurizrLite.java:50) ~[classes!/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) ~[structurizr-lite-3033.war:na]
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:935) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 27 common frames omitted
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 35 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 35 common frames omitted
Caused by: java.lang.IllegalStateException: zip file closed
at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:832) ~[na:na]
at java.base/java.util.zip.ZipFile.getManifestName(ZipFile.java:1058) ~[na:na]
at java.base/java.util.zip.ZipFile$1.getManifestName(ZipFile.java:1101) ~[na:na]
at java.base/java.util.jar.JarFile.getManEntry(JarFile.java:950) ~[na:na]
at java.base/java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:1013) ~[na:na]
at java.base/java.util.jar.JarFile.isMultiRelease(JarFile.java:387) ~[na:na]
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:68) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:41) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:328) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:271) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:234) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:83) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5144) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 41 common frames omitted
2023-03-21T15:32:41.320+08:00 WARN 1756 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server
2023-03-21T15:32:41.320+08:00 INFO 1756 --- [ main] com.structurizr.lite.StructurizrLite : ********************************************************
2023-03-21T15:32:41.321+08:00 INFO 1756 --- [ main] com.structurizr.lite.StructurizrLite : Stopping Structurizr Lite
2023-03-21T15:32:41.321+08:00 INFO 1756 --- [ main] com.structurizr.lite.StructurizrLite : ********************************************************
2023-03-21T15:32:41.357+08:00 ERROR 1756 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.context.ApplicationContextException: Unable to start web server
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:164) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:578) ~[spring-context-6.0.6.jar!/:6.0.6]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.4.jar!/:3.0.4]
at com.structurizr.lite.StructurizrLite.main(StructurizrLite.java:50) ~[classes!/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[structurizr-lite-3033.war:na]
at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) ~[structurizr-lite-3033.war:na]
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:142) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:488) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:210) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:183) ~[spring-boot-3.0.4.jar!/:3.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161) ~[spring-boot-3.0.4.jar!/:3.0.4]
... 14 common frames omitted
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:935) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:252) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:926) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[spring-boot-3.0.4.jar!/:3.0.4]
... 19 common frames omitted
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during start
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 27 common frames omitted
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:935) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 27 common frames omitted
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 35 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 35 common frames omitted
Caused by: java.lang.IllegalStateException: zip file closed
at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:832) ~[na:na]
at java.base/java.util.zip.ZipFile.getManifestName(ZipFile.java:1058) ~[na:na]
at java.base/java.util.zip.ZipFile$1.getManifestName(ZipFile.java:1101) ~[na:na]
at java.base/java.util.jar.JarFile.getManEntry(JarFile.java:950) ~[na:na]
at java.base/java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:1013) ~[na:na]
at java.base/java.util.jar.JarFile.isMultiRelease(JarFile.java:387) ~[na:na]
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:68) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:41) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:393) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:328) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:271) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:234) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:83) ~[tomcat-embed-jasper-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5144) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.5.jar!/:na]
... 41 common frames omitted
I have many views and thus a long list of thumbnails. When I make a change in the model and then subsequently reload the page to see the change, the correct diagram loads due to it being in the URL; However, the thumbnail list is defaulted with the first view at the top. Is it possible to scroll the thumbnail list to have the current diagram in view?
Hi, I receive the following error when trying to run structurizr-lite locally from the .war file (Build 2848).
I can start the server, accept the license agreement, and then go to the diagrams page. This is when the error occurs (see below).
I'm running this on Windows 10 with OpenJDK 11.0.14.
Note: In the copy below, I replaced the actual workspace path manually with ****.
2022-10-25 12:32:14.844 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Structurizr Lite
2022-10-25 12:32:14.854 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Build: 2848
2022-10-25 12:32:14.854 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Built: 2022-10-24T17:14:19Z
2022-10-25 12:32:14.854 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : structurizr-java: v1.16.0
2022-10-25 12:32:14.874 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : structurizr-dsl: v1.21.0
2022-10-25 12:32:14.874 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite :
2022-10-25 12:32:14.874 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Workspace path: ****
2022-10-25 12:32:14.874 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Workspace filename: workspace[.dsl|.json]
2022-10-25 12:32:14.874 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : URL:
2022-10-25 12:32:14.884 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Memory: used=74MB; free=79MB; total=154MB; max=2018MB
2022-10-25 12:32:14.894 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Auto-save interval: 5000ms
2022-10-25 12:32:14.894 INFO 18772 --- [ main] com.structurizr.lite.StructurizrLite : Auto-refresh interval: 0ms
2022-10-25 12:32:26.968 INFO 18772 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'**************************
2022-10-25 12:32:26.968 INFO 18772 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-10-25 12:32:26.968 INFO 18772 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
2022-10-25 12:32:31.224 WARN 18772 --- [nio-8080-exec-1] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [365] milliseconds.
java.io.IOException: Cannot run program "dot": CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at com.structurizr.graphviz.GraphvizAutomaticLayout.runGraphviz(GraphvizAutomaticLayout.java:78)
at com.structurizr.graphviz.GraphvizAutomaticLayout.apply(GraphvizAutomaticLayout.java:97)
at com.structurizr.lite.web.GraphvizController.post(GraphvizController.java:66)
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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessImpl.create(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:487)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:154)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 54 more
The HTML and interactive SVG exports are less useful now that the diagram renderer can be used standalone ... leave a comment if you miss these features.
Instead of making users reload Structurizer to see file changes in Structurizr Lite, update the workspace view immediately after files change.
In other words, remove step six in the Structurizr lite workflow.
Your JQuery is setting the expiry on the cookie to December 2022. Since that has passed, the cookie doesn't set, and the pop-up returns repeatedly. This is what is in the UI code on inspection:
document.cookie = "structurizr.hideDiagramEditorIntroduction=true; expires=31 Dec 2022 23:59:59 UTC; path=/";
Using the console, and changing it to Dec 2030
fixed it. I'm not seeing if ya'll have a repo for the UI anywhere, I would put in a PR for it, but ¯_(ツ)_/¯
Hope this helps :)
Following the instructions here:
https://structurizr.com/share/76352/documentation#spring-boot
I create this command:
java -Djdk.util.jar.enableMultiRelease=false -jar structurizr-lite-3087.war C:\git\python-experiments\C4-DSL
Which produces the following:
PS C:\tools> java -Djdk.util.jar.enableMultiRelease=false -jar structurizr-lite-3087.war C:\git\python-experiments\C4-DSL
Error: Could not find or load main class .util.jar.enableMultiRelease=false
Caused by: java.lang.ClassNotFoundException: /util/jar/enableMultiRelease=false
I believe the first argument is the problem, because I get the same error message if I lop off the rest of the line:
PS C:\tools> java -Djdk.util.jar.enableMultiRelease=false
Error: Could not find or load main class .util.jar.enableMultiRelease=false
Caused by: java.lang.ClassNotFoundException: /util/jar/enableMultiRelease=false
PS C:\tools>
(Follow instructions above)
No response
No response
Directory: C:\tools
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/3/2023 11:39 AM 125042412 structurizr-lite-3087.war
Major
High
I have no budget, please fix this for free
PS C:\tools> java --version
openjdk 20.0.1 2023-04-18
OpenJDK Runtime Environment (build 20.0.1+9-29)
OpenJDK 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)
(I also tried it with JDK 18 with the same results)
Processor Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz 1.50 GHz
Installed RAM 16.0 GB (15.6 GB usable)
System type 64-bit operating system, x64-based processor
Edition Windows 11 Home
Version 22H2
Installed on 12/10/2022
OS build 22621.1848
Following these instructions:
https://structurizr.com/share/76352/documentation#open-your-web-browser
I go to http://localhost:8080/
I get a blank browser page along with the "loading" spinner in the browser tab.
If I CTRL-C out of the app running on the console, then I immediately see this:
But that only happens sometimes.
There was one attempt where I seemed to be able to get it working, even editing the workspace.dsl
, getting an (appropriate) error message and fixing it and reloading the page to regenerate the diagram. But it's unclear to me how I accomplished this; so far it appears random whether a particular command-line invocation is going to successfully produce a browser page.
java "-Djdk.util.jar.enableMultiRelease=false" -jar structurizr-lite-3087.war C:\git\python-experiments\C4-DSL
workspace {
model {
user = person "Bob"
softwareSystem = softwareSystem "Robotic Storage System"
user -> softwareSystem "Uses"
}
views {
systemContext softwareSystem "Foo_Bar" {
include *
autoLayout
}
}
}
{
"id" : 1,
"name" : "Name",
"description" : "Description",
"lastModifiedDate" : "2023-07-05T17:30:01Z",
"properties" : {
"structurizr.dsl" : "d29ya3NwYWNlIHsNCg0KICAgIG1vZGVsIHsNCiAgICAgICAgdXNlciA9IHBlcnNvbiAiQm9iIg0KICAgICAgICBzb2Z0d2FyZVN5c3RlbSA9IHNvZnR3YXJlU3lzdGVtICJSb2JvdGljIFN0b3JhZ2UgU3lzdGVtIg0KDQogICAgICAgIHVzZXIgLT4gc29mdHdhcmVTeXN0ZW0gIlVzZXMiDQogICAgfQ0KDQogICAgdmlld3Mgew0KICAgICAgICBzeXN0ZW1Db250ZXh0IHNvZnR3YXJlU3lzdGVtICJGb29fQmFyIiB7DQogICAgICAgICAgICBpbmNsdWRlICoNCiAgICAgICAgICAgIGF1dG9MYXlvdXQNCiAgICAgICAgfQ0KICAgIH0NCg0KfQ0K"
},
"configuration" : { },
"model" : {
"people" : [ {
"id" : "1",
"tags" : "Element,Person",
"properties" : {
"structurizr.dsl.identifier" : "user"
},
"name" : "Bob",
"relationships" : [ {
"id" : "3",
"tags" : "Relationship",
"properties" : {
"structurizr.dsl.identifier" : "40283aa9-5fc2-43c6-98d2-f585918a5020"
},
"sourceId" : "1",
"destinationId" : "2",
"description" : "Uses"
} ],
"location" : "Unspecified"
} ],
"softwareSystems" : [ {
"id" : "2",
"tags" : "Element,Software System",
"properties" : {
"structurizr.dsl.identifier" : "softwaresystem"
},
"name" : "Robotic Storage System",
"location" : "Unspecified",
"documentation" : { }
} ]
},
"documentation" : { },
"views" : {
"systemContextViews" : [ {
"key" : "Foo_Bar",
"order" : 1,
"softwareSystemId" : "2",
"automaticLayout" : {
"implementation" : "Graphviz",
"rankDirection" : "TopBottom",
"rankSeparation" : 300,
"nodeSeparation" : 300,
"edgeSeparation" : 0,
"vertices" : false
},
"enterpriseBoundaryVisible" : true,
"relationships" : [ {
"id" : "3"
} ],
"elements" : [ {
"id" : "1",
"x" : 0,
"y" : 0
}, {
"id" : "2",
"x" : 0,
"y" : 0
} ]
} ],
"configuration" : {
"branding" : { },
"styles" : { },
"terminology" : { },
"lastSavedView" : "Foo_Bar"
}
}
}
No response
Powershell console output:
2023-07-05T11:44:43.383-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Starting StructurizrLite using Java 20.0.1 with PID 9584 (C:\tools\structurizr-lite-3087.war started by bruce in C:\tools)
2023-07-05T11:44:43.395-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : No active profile set, falling back to 1 default profile: "default"
2023-07-05T11:45:00.661-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Started StructurizrLite in 18.372 seconds (process running for 21.318)
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : _____ _ _ _
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : / ____| | | | (_)
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : | (___ | |_ _ __ _ _ ___| |_ _ _ _ __ _ _____ __
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : \___ \| __| '__| | | |/ __| __| | | | '__| |_ / '__|
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : ____) | |_| | | |_| | (__| |_| |_| | | | |/ /| |
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : |_____/ \__|_| \__,_|\___|\__|\__,_|_| |_/___|_|
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Structurizr Lite
2023-07-05T11:45:00.674-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : - build: 3087 (2023-07-03T16:28:01Z
2023-07-05T11:45:00.685-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-java: v1.24.1
2023-07-05T11:45:00.738-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-dsl: v1.30.2
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-import: v1.4.1
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Workspace path: C:\git\python-experiments\C4-DSL
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Workspace filename: workspace[.dsl|.json]
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : URL:
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Auto-save interval: 5000ms
2023-07-05T11:45:00.745-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Auto-refresh interval: 0ms
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : dot: available
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : MIT License
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Copyright (c) 2023 Structurizr Limited
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : Permission is hereby granted, free of charge, to any person obtaining a copy
2023-07-05T11:45:00.817-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : of this software and associated documentation files (the "Software"), to deal
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : in the Software without restriction, including without limitation the rights
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : copies of the Software, and to permit persons to whom the Software is
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : furnished to do so, subject to the following conditions:
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : The above copyright notice and this permission notice shall be included in all
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : copies or substantial portions of the Software.
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite :
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2023-07-05T11:45:00.826-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2023-07-05T11:45:00.833-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2023-07-05T11:45:00.834-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2023-07-05T11:45:00.834-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2023-07-05T11:45:00.834-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : SOFTWARE.
2023-07-05T11:45:00.834-06:00 INFO 9584 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
7/3/2023 11:39 AM 125042412 structurizr-lite-3087.war
PS C:\tools> java --version
openjdk 20.0.1 2023-04-18
OpenJDK Runtime Environment (build 20.0.1+9-29)
OpenJDK 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)
Host Name: DESKTOP-25UJOVE
OS Name: Microsoft Windows 11 Home
OS Version: 10.0.22621 N/A Build 22621
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Organization: N/A
Original Install Date: 12/10/2022, 7:24:40 PM
System Boot Time: 6/29/2023, 11:57:39 AM
System Manufacturer: Microsoft Corporation
System Model: Surface Pro 7
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 126 Stepping 5 GenuineIntel ~1298 Mhz
BIOS Version: Microsoft Corporation 15.11.140, 7/8/2022
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-07:00) Mountain Time (US & Canada)
Total Physical Memory: 15,970 MB
Available Physical Memory: 6,037 MB
Virtual Memory: Max Size: 16,994 MB
Virtual Memory: Available: 4,185 MB
Virtual Memory: In Use: 12,809 MB
### Severity
Critical
### Priority
High
### Resolution
I have no budget, please fix this for free
### More information
I'm going to try the Docker version to see if that works any better.
I am trying to run structurizr/lite and it hits out of memory issues.
stdout:
[0.002s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create worker GC thread. Out of system resources.
# An error report file with more information is saved as:
# //hs_err_pid12.log
hs_err_pidN.log:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create worker GC thread. Out of system resources.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Zero Based Compressed Oops mode in which the Java heap is
# placed in the first 32GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 32GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (workerManager.hpp:87), pid=13, tid=13
#
# JRE version: (17.0.4+8) (build )
# Java VM: OpenJDK 64-Bit Server VM (17.0.4+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to //core.13)
#
--------------- S U M M A R Y ------------
Command Line: -Xms1G -Xmx5G /usr/local/structurizr-lite.war
Host: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz, 8 cores, 31G, Ubuntu 22.04.1 LTS
Time: Mon Sep 26 06:24:41 2022 UTC elapsed time: 0.001758 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x0000557f19961cf0): JavaThread "Unknown thread" [_thread_in_vm, id=13, stack(0x00007ffe46424000,0x00007ffe46c24000)]
Stack: [0x00007ffe46424000,0x00007ffe46c24000], sp=0x00007ffe46c1e690, free space=8169k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xed8f41] VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x1a1
V [libjvm.so+0xed9b0d] VMError::report_and_die(Thread*, char const*, int, unsigned long, VMErrorType, char const*, __va_list_tag*)+0x2d
V [libjvm.so+0x603593] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*, ...)+0xc3
V [libjvm.so+0xf0d13f] WorkerManager::add_workers(WorkGang*, unsigned int, unsigned int, unsigned int, os::ThreadType, bool)+0x18f
V [libjvm.so+0xf0d2da] WorkGang::initialize_workers()+0x4a
V [libjvm.so+0x6e9631] G1CollectedHeap::initialize()+0x6c1
V [libjvm.so+0xe874f2] universe_init()+0xd2
V [libjvm.so+0x7f5b17] init_globals()+0x37
V [libjvm.so+0xe5e6e0] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3a0
V [libjvm.so+0x8b3062] JNI_CreateJavaVM+0x52
C [libjli.so+0x4a1f] JavaMain+0x8f
C [libjli.so+0x9a90] CallJavaMainInNewThread+0xb0
C [libjli.so+0x6a0d] ContinueInNewThread+0x5d
C [libjli.so+0x8166] JLI_Launch+0x1566
C [java+0x1203]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x00007f1721c4c3a0, length=0, elements={
}
Java Threads: ( => current thread )
Other Threads:
[error occurred during error reporting (printing all threads), id 0xb, SIGSEGV (0xb) at pc=0x00007f172100fe20]
VM state: not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x0000557f1995f680] Heap_lock - owner thread: 0x0000557f19961cf0
Heap address: 0x00000006c0000000, size: 5120 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000000000000-0x0000000000000000-0x0000000000000000), size 0, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 0.
Narrow klass base: 0x0000000000000000, Narrow klass shift: 0, Narrow klass range: 0x0
GC Precious Log:
<Empty>
Heap:
garbage-first heap total 0K, used 0K [0x00000006c0000000, 0x0000000800000000)
region size 4096K, 0 young (0K), 0 survivors (0K)
[error occurred during error reporting (printing heap information), id 0xb, SIGSEGV (0xb) at pc=0x00007f17215d197a]
GC Heap History (0 events):
No events
Deoptimization events (0 events):
No events
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (0 events):
No events
VM Operations (0 events):
No events
Events (2 events):
Event: 0.001 Protecting memory [0x00007ffe46424000,0x00007ffe46428000] with protection modes 0
Event: 0.001 Loaded shared library /opt/java/openjdk/lib/libjava.so
Dynamic libraries:
6c0000000-800000000 ---p 00000000 00:00 0
557f18a7d000-557f18a7e000 r--p 00000000 00:164 3732201 /opt/java/openjdk/bin/java
557f18a7e000-557f18a7f000 r-xp 00001000 00:164 3732201 /opt/java/openjdk/bin/java
557f18a7f000-557f18a80000 r--p 00002000 00:164 3732201 /opt/java/openjdk/bin/java
557f18a80000-557f18a81000 r--p 00002000 00:164 3732201 /opt/java/openjdk/bin/java
557f18a81000-557f18a82000 rw-p 00003000 00:164 3732201 /opt/java/openjdk/bin/java
557f19928000-557f199f7000 rw-p 00000000 00:00 0 [heap]
7f16ff987000-7f16ffd72000 rw-p 00000000 00:00 0
7f16ffd72000-7f16ffd73000 ---p 00000000 00:00 0
7f16ffd73000-7f16ffec7000 rw-p 00000000 00:00 0
7f16ffec7000-7f170bcc7000 ---p 00000000 00:00 0
7f170bcc7000-7f170c4d4000 rw-p 00000000 00:00 0
7f170c4d4000-7f170c5ba000 ---p 00000000 00:00 0
7f170c5ba000-7f170c5bf000 rw-p 00000000 00:00 0
7f170c5bf000-7f170c6a5000 ---p 00000000 00:00 0
7f170c6a5000-7f170c6aa000 rw-p 00000000 00:00 0
7f170c6aa000-7f170c6b1000 ---p 00000000 00:00 0
7f170c6b1000-7f170c921000 rwxp 00000000 00:00 0
7f170c921000-7f170cc43000 ---p 00000000 00:00 0
7f170cc43000-7f170ceb3000 rwxp 00000000 00:00 0
7f170ceb3000-7f171417a000 ---p 00000000 00:00 0
7f171417a000-7f17143ea000 rwxp 00000000 00:00 0
7f17143ea000-7f171b6b1000 ---p 00000000 00:00 0
7f171b6b1000-7f171b6be000 r--p 00000000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6be000-7f171b6d0000 r-xp 0000d000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6d0000-7f171b6d6000 r--p 0001f000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6d6000-7f171b6d7000 ---p 00025000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6d7000-7f171b6d8000 r--p 00025000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6d8000-7f171b6d9000 rw-p 00026000 00:164 3732416 /opt/java/openjdk/lib/libjava.so
7f171b6d9000-7f171b6da000 rw-p 00000000 00:00 0
7f171b6da000-7f171b6e2000 rw-s 00000000 00:164 3723862 /tmp/hsperfdata_root/13
7f171b6e2000-7f172070e000 r--s 00000000 00:164 3732439 /opt/java/openjdk/lib/modules
7f172070e000-7f1720712000 r--p 00000000 00:164 3732420 /opt/java/openjdk/lib/libjimage.so
7f1720712000-7f1720725000 r-xp 00004000 00:164 3732420 /opt/java/openjdk/lib/libjimage.so
7f1720725000-7f172072b000 r--p 00017000 00:164 3732420 /opt/java/openjdk/lib/libjimage.so
7f172072b000-7f172072d000 r--p 0001c000 00:164 3732420 /opt/java/openjdk/lib/libjimage.so
7f172072d000-7f172072e000 rw-p 0001e000 00:164 3732420 /opt/java/openjdk/lib/libjimage.so
7f172072e000-7f172082e000 rw-p 00000000 00:00 0
7f172082e000-7f172083c000 r--p 00000000 00:164 3724783 /usr/lib/x86_64-linux-gnu/libm.so.6
7f172083c000-7f17208b8000 r-xp 0000e000 00:164 3724783 /usr/lib/x86_64-linux-gnu/libm.so.6
7f17208b8000-7f1720913000 r--p 0008a000 00:164 3724783 /usr/lib/x86_64-linux-gnu/libm.so.6
7f1720913000-7f1720914000 r--p 000e4000 00:164 3724783 /usr/lib/x86_64-linux-gnu/libm.so.6
7f1720914000-7f1720915000 rw-p 000e5000 00:164 3724783 /usr/lib/x86_64-linux-gnu/libm.so.6
7f1720915000-7f1720916000 r--p 00000000 00:164 3724828 /usr/lib/x86_64-linux-gnu/librt.so.1
7f1720916000-7f1720917000 r-xp 00001000 00:164 3724828 /usr/lib/x86_64-linux-gnu/librt.so.1
7f1720917000-7f1720918000 r--p 00002000 00:164 3724828 /usr/lib/x86_64-linux-gnu/librt.so.1
7f1720918000-7f1720919000 r--p 00002000 00:164 3724828 /usr/lib/x86_64-linux-gnu/librt.so.1
7f1720919000-7f172091a000 rw-p 00003000 00:164 3724828 /usr/lib/x86_64-linux-gnu/librt.so.1
7f172091a000-7f1720b6b000 r--p 00000000 00:164 3732449 /opt/java/openjdk/lib/server/libjvm.so
7f1720b6b000-7f1721884000 r-xp 00251000 00:164 3732449 /opt/java/openjdk/lib/server/libjvm.so
7f1721884000-7f1721b0f000 r--p 00f6a000 00:164 3732449 /opt/java/openjdk/lib/server/libjvm.so
7f1721b0f000-7f1721bc8000 r--p 011f4000 00:164 3732449 /opt/java/openjdk/lib/server/libjvm.so
7f1721bc8000-7f1721bfd000 rw-p 012ad000 00:164 3732449 /opt/java/openjdk/lib/server/libjvm.so
7f1721bfd000-7f1721c5a000 rw-p 00000000 00:00 0
7f1721c5a000-7f1721c82000 r--p 00000000 00:164 3724731 /usr/lib/x86_64-linux-gnu/libc.so.6
7f1721c82000-7f1721e17000 r-xp 00028000 00:164 3724731 /usr/lib/x86_64-linux-gnu/libc.so.6
7f1721e17000-7f1721e6f000 r--p 001bd000 00:164 3724731 /usr/lib/x86_64-linux-gnu/libc.so.6
7f1721e6f000-7f1721e73000 r--p 00214000 00:164 3724731 /usr/lib/x86_64-linux-gnu/libc.so.6
7f1721e73000-7f1721e75000 rw-p 00218000 00:164 3724731 /usr/lib/x86_64-linux-gnu/libc.so.6
7f1721e75000-7f1721e82000 rw-p 00000000 00:00 0
7f1721e82000-7f1721e83000 r--p 00000000 00:164 3724745 /usr/lib/x86_64-linux-gnu/libdl.so.2
7f1721e83000-7f1721e84000 r-xp 00001000 00:164 3724745 /usr/lib/x86_64-linux-gnu/libdl.so.2
7f1721e84000-7f1721e85000 r--p 00002000 00:164 3724745 /usr/lib/x86_64-linux-gnu/libdl.so.2
7f1721e85000-7f1721e86000 r--p 00002000 00:164 3724745 /usr/lib/x86_64-linux-gnu/libdl.so.2
7f1721e86000-7f1721e87000 rw-p 00003000 00:164 3724745 /usr/lib/x86_64-linux-gnu/libdl.so.2
7f1721e87000-7f1721e88000 r--p 00000000 00:164 3724826 /usr/lib/x86_64-linux-gnu/libpthread.so.0
7f1721e88000-7f1721e89000 r-xp 00001000 00:164 3724826 /usr/lib/x86_64-linux-gnu/libpthread.so.0
7f1721e89000-7f1721e8a000 r--p 00002000 00:164 3724826 /usr/lib/x86_64-linux-gnu/libpthread.so.0
7f1721e8a000-7f1721e8b000 r--p 00002000 00:164 3724826 /usr/lib/x86_64-linux-gnu/libpthread.so.0
7f1721e8b000-7f1721e8c000 rw-p 00003000 00:164 3724826 /usr/lib/x86_64-linux-gnu/libpthread.so.0
7f1721e8c000-7f1721e8f000 r--p 00000000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e8f000-7f1721e99000 r-xp 00003000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e99000-7f1721e9c000 r--p 0000d000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e9c000-7f1721e9d000 ---p 00010000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e9d000-7f1721e9e000 r--p 00010000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e9e000-7f1721e9f000 rw-p 00011000 00:164 3732421 /opt/java/openjdk/lib/libjli.so
7f1721e9f000-7f1721ea1000 r--p 00000000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721ea1000-7f1721eb2000 r-xp 00002000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721eb2000-7f1721eb8000 r--p 00013000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721eb8000-7f1721eb9000 ---p 00019000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721eb9000-7f1721eba000 r--p 00019000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721eba000-7f1721ebb000 rw-p 0001a000 00:164 3724862 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
7f1721ebc000-7f1721ebd000 ---p 00000000 00:00 0
7f1721ebd000-7f1721ebe000 r--p 00000000 00:00 0
7f1721ebe000-7f1721ec0000 rw-p 00000000 00:00 0
7f1721ec0000-7f1721ec2000 r--p 00000000 00:164 3724713 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1721ec2000-7f1721eec000 r-xp 00002000 00:164 3724713 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1721eec000-7f1721ef7000 r--p 0002c000 00:164 3724713 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1721ef7000-7f1721ef8000 ---p 00000000 00:00 0
7f1721ef8000-7f1721efa000 r--p 00037000 00:164 3724713 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1721efa000-7f1721efc000 rw-p 00039000 00:164 3724713 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7ffe46424000-7ffe46428000 ---p 00000000 00:00 0
7ffe46c03000-7ffe46c24000 rw-p 00000000 00:00 0 [stack]
7ffe46c77000-7ffe46c7b000 r--p 00000000 00:00 0 [vvar]
7ffe46c7b000-7ffe46c7d000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]
VM Arguments:
jvm_args: -Xms1G -Xmx5G
java_command: /usr/local/structurizr-lite.war
java_class_path (initial): /usr/local/structurizr-lite.war
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 2 {product} {ergonomic}
uint G1ConcRefinementThreads = 8 {product} {ergonomic}
size_t G1HeapRegionSize = 4194304 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 1073741824 {product} {command line}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 5368709120 {product} {command line}
size_t MinHeapDeltaBytes = 4194304 {product} {ergonomic}
size_t MinHeapSize = 1073741824 {product} {command line}
uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
size_t SoftMaxHeapSize = 5368709120 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
structurizr/structurizr#1: stderr all=off uptime,level,tags
Environment Variables:
JAVA_HOME=/opt/java/openjdk
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
TERM=xterm
Signal Handlers:
SIGSEGV: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGBUS: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGFPE: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGPIPE: javaSignalHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: javaSignalHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGILL: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGUSR2: SR_handler in libjvm.so, mask=00000000000000000000000000000000, flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, mask=00000000000000000000000000000000, flags=none
SIGINT: SIG_DFL, mask=00000000000000000000000000000000, flags=none
SIGTERM: SIG_DFL, mask=00000000000000000000000000000000, flags=none
SIGQUIT: javaSignalHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
SIGTRAP: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO
--------------- S Y S T E M ---------------
OS:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
uname: Linux 5.15.0-48-generic structurizr/structurizr#54-Ubuntu SMP Fri Aug 26 13:26:29 UTC 2022 x86_64
OS uptime: 0 days 0:18 hours
libc: glibc 2.35 NPTL 2.35
rlimit (soft/hard): STACK 8192k/infinity , CORE infinity/infinity , NPROC infinity/infinity , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 64k/64k
load average: 0.44 0.87 1.01
/proc/meminfo:
MemTotal: 32875028 kB
MemFree: 17946604 kB
MemAvailable: 25609248 kB
Buffers: 319380 kB
Cached: 7538476 kB
SwapCached: 0 kB
Active: 3366916 kB
Inactive: 10923012 kB
Active(anon): 17380 kB
Inactive(anon): 6438864 kB
Active(file): 3349536 kB
Inactive(file): 4484148 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 1256 kB
Writeback: 0 kB
AnonPages: 6432052 kB
Mapped: 1183400 kB
Shmem: 81560 kB
KReclaimable: 292312 kB
Slab: 434644 kB
SReclaimable: 292312 kB
SUnreclaim: 142332 kB
KernelStack: 24944 kB
PageTables: 44844 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 18534660 kB
Committed_AS: 17892192 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 64744 kB
VmallocChunk: 0 kB
Percpu: 10272 kB
HardwareCorrupted: 0 kB
AnonHugePages: 22528 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 405440 kB
DirectMap2M: 33148928 kB
/sys/kernel/mm/transparent_hugepage/enabled: always [madvise] never
/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): always defer defer+madvise [madvise] never
Process Memory:
Virtual Size: 5806540K (peak: 5806540K)
Resident Set Size: 18448K (peak: 18448K) (anon: 5900K, file: 12548K, shmem: 0K)
Swapped out: 0K
C-Heap outstanding allocations: 12997K, retained: 66K
glibc malloc tunables: (default)
/proc/sys/kernel/threads-max (system-wide limit on the number of threads): 255943
/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): 65530
/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): 4194304
container (cgroup) information:
container_type: cgroupv2
cpu_cpuset_cpus: not supported
cpu_memory_nodes: not supported
active_processor_count: 8
cpu_quota: no quota
cpu_period: 100000
cpu_shares: no shares
memory_limit_in_bytes: unlimited
memory_and_swap_limit_in_bytes: unlimited
memory_soft_limit_in_bytes: unlimited
memory_usage_in_bytes: 7480 k
memory_max_usage_in_bytes: not supported
maximum number of tasks: 38391
current number of tasks: 2
KVM virtualization detected
Steal ticks since vm start: 0
Steal ticks percentage since vm start: 0.000
CPU: total 8 (initial active 8) (8 cores per cpu, 1 threads per core) family 6 model 158 stepping 13 microcode 0x0, cx8, cmov, fxsr, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, clmul, vzeroupper, clflush, clflushopt, hv
CPU Model and flags from /proc/cpuinfo:
model name : Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority vpid fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d arch_capabilities
Online cpus: 0-7
Offline cpus:
BIOS frequency limitation: <Not Available>
Frequency switch latency (ns): <Not Available>
Available cpu frequencies: <Not Available>
Current governor: <Not Available>
Core performance/turbo boost: <Not Available>
Memory: 4k page, physical 32875028k(17946604k free), swap 2097148k(2097148k free)
Page Sizes: 4k
vm_info: OpenJDK 64-Bit Server VM (17.0.4+8) for linux-amd64 JRE (17.0.4+8), built on Jul 19 2022 00:00:00 by "temurin" with gcc 10.3.0
END.
I tried tweaking the memory limits a bit (java -jar -Xms6G -Xmx8G /usr/local/structurizr-lite.war
) but that yielded the same result.
I ran free -h
from the docker container context:
root@7f84bcb9477d:/# free -h
total used free shared buff/cache available
Mem: 31Gi 6.5Gi 17Gi 80Mi 7.8Gi 24Gi
Swap: 2.0Gi 0B 2.0Gi
When there are 2 relationships between containers of 2 software systems (for example because the technology underpinning those relationships is not the same), only the last relationship declared in the DSL is rendered ; expectation is to have both relationships rendered.
Example 1 (relationship a.c2 -> b.c2 not rendered) :
workspace {
!identifiers hierarchical
model {
a = softwareSystem "System A" {
c1 = container "Container A1"
c2 = container "Container A2"
}
b = softwareSystem "System B" {
c1 = container "Container B1"
c2 = container "Container B2"
}
a.c1 -> b.c1 "Does 1" "Techno 1"
a.c2 -> b.c2 "Does 2" "Techno 2"
}
views {
systemLandscape test-ab "Test 4 bug"
include *
autolayout lr
}
}
On the contrary, if:
workspace {
!identifiers hierarchical
model {
a = softwareSystem "System A" {
c1 = container "Container A1"
c2 = container "Container A2"
}
b = softwareSystem "System B" {
c1 = container "Container B1"
c2 = container "Container B2"
}
a.c1 -> b.c1 "Does 1" "Techno 1"
a -> b "Does 2" "Techno 2"
}
views {
systemLandscape test-ab "Test 4 bug"
include *
autolayout lr
}
}
Render the Description' Example 1 in Structurizr/lite
No response
No response
Docker for Structurizr/lite 3046.
Major
Medium
I have no budget, please fix this for free
No response
I'm trying to render a plantuml diagram in a markdown file included with !docs
, however it doesn't render and I simply see the contents of the plantuml script.
Is this a supported feature?
Here's the example I'm trying to render:
@startuml
Alice -> Bob: Hello!
Bob -> Alice: Hi!
@enduml
Hi Simon
For a (short-lived) project we're experimenting going all-in structurizr for diagrams and documentation, as the workflow is very appealing.
I know you have stated that not all markdown features might be supported:
markdown-it is used to render Markdown, and asciidoctor.js is used to render AsciiDoc. Please note that Structurizr's documentation feature may not render your Markdown/AsciiDoc in exactly the same way that other dedicated documentation tools will, and some features may not be supported. If you need full control over the look and feel of your documentation, you may be better to use an external tool (e.g. Asciidoctor, Hugo, Jekyll, etc) in conjunction with the iframe embed or image embed features.
But I think this (nested lists) still counts as an elemental feature in order to write even the most simple forms of documentation.
Any chance this is fixable? Or do you have a workaround?
I'm running the structurizr lite docker image locally using:
docker run -it --rm -p 8080:8080 -v $PWD:/usr/local/structurizr structurizr/lite
and then editing workspace.dsl to the sample to the basic example in the language reference
workspace {
model {
user = person "User"
softwareSystem = softwareSystem "Software System" {
webapp = container "Web Application"
database = container "Database"
}
user -> webapp "Uses"
webapp -> database "Reads from and writes to"
}
views {
theme default
}
}
When I render it on localhost:8080 I can't edit because This diagram is not editable because automatic layout is enabled
. However the dsl contains no autoLayout option. I can see autoLayout in workplace.json
but if I remove that, it is overwritten and recreated again.
Hi,
I'm using docker command docker run --rm -v $(pwd):/usr/local/structurizr -p 8080:8080 structurizr/lite
is there any way to hot reload the changes using plugins (jetbrains), extensions (vscode). I tried "live server" with proxy but it does not reload the changes done to workspace.dsl
.
If there are any way to do it, please shed a light on it.
Thanks
New versions of StruturizrR Lite fail to parse some relationships. I provided one example, but there are others. Sometimes it fails if a relationship doesn't have a description.
internetBankingSystem -> email "Sends email using"
internetBankingSystem -> email "Sends e-mail using"
Expected behavior
StructurizR updates the relationship comment.
Actual behavior
StructurizR fails with the following error workspace.dsl: Cannot invoke "Object.equals(Object)" because "r" is null at line 21: internetBankingSystem -> email "Sends e-mail using" at line 5: !include model.dsl
group "Big Bank plc" {
mainframe = softwaresystem "Mainframe Banking System" "Stores all of the core banking information about customers, accounts, transactions, etc." "Existing"
supportStaff -> mainframe "Uses"
email = softwaresystem "E-mail System" "The internal Microsoft Exchange e-mail system." "Existing"
email -> customer "Sends e-mails to"
atm = softwaresystem "ATM" "Allows customers to withdraw cash." "Existing"
atm -> mainframe "Uses"
customer -> atm "Withdraws cash using"
internetBankingSystem = softwaresystem "Internet Banking System" "Allows customers to view information about their bank accounts, and make payments." {
!include internet-banking-system/ibs.dsl
}
internetBankingSystem -> mainframe "Gets account information from, and makes payments using"
internetBankingSystem -> email "Sends e-mail using"
customer -> internetBankingSystem "Views account balances and makes payments using"
}
services:
target-architecture:
container_name: software-architecture-documentation-target
image: structurizr/lite
volumes:
- ./target:/usr/local/structurizr
ports:
- "8081:8080"
Critical
High
I'm willing to fix this myself and raise a PR
No response
When deploying structurizrs docker image as a container behind an SSL terminating reverse proxy (like traefik) by docker-compose some static content like css and js files are not reachable as their URLs are generated with "http" not "https".
Other URLs are correctly built with "https".
In this example when opening structurizr with the Base URL "https://struct.example.com" this is the result:
Design completely messed up cause of missing css/js. This can be found in DevTools network view:
Is there any way to configure structurizrs Base URL / Scheme (Env - var?) Couldn't find anything in the Docker regarding docs.
Or could structurizr simply respect "X-Forwarded-Proto" Header for building URLs?
Hey,
I have a problem running my structurizr lite with AsciiDoc documentation. I'm getting the following error:
workspace.dsl: Error importing documentation from /usr/local/structurizr/docs: java.lang.IllegalArgumentException: Content must be specified at line 6: !docs docs
This has been working fine and I don't think I have changed anything in the documentation. This is the output from the container terminal meaning that the doc
folder and content inside do really exist:
# ls /usr/local/structurizr
docs images workspace.dsl workspace.json
# ls /usr/local/structurizr/docs
1.Introduction.adoc 3.1.Frontend.adoc 3.4.EventsHandlerApp.adoc
2.Cloud.adoc 3.2.Backend.adoc 3.9.Others.adoc
3.0.Components.adoc 3.3.CampaignTasksFunction.adoc 4.Additional.adoc
What seems to be an issue here?
Thanks
Hello, I am facing the following error while browsing the site : java.lang.RuntimeException: Could not load a scripting engine for extension "kts"
.
Maybe you have an idea?
The issue seems to be similar to this one : #33
I haven't found a way to systematically reproduce the bug, but these steps produced an error for me :
workspace {
model {
user = person "User"
softwareSystem = softwareSystem "Software System" {
test_container = container "Test Container" {
description "test_container"
tags "test"
technology "TEST TECHNOLOGY"
}
}
user -> softwareSystem "Uses"
}
# https://github.com/structurizr/dsl/blob/master/docs/language-reference.md#scripts
!script scripts/copy_containers_tech_as_tags.kts
views {
systemContext softwareSystem "Diagram1" {
include *
autoLayout
}
container softwareSystem "Diagram2" {
include *
autoLayout
}
}
}
Minor
Low
I have no budget, please fix this for free
Content of scripts/copy_containers_tech_as_tags.kts
:
import com.structurizr.model.*
// For each container, append defined Technology as new Tag
// in order to help styling (styles are based on tags)
workspace.model.softwareSystems.forEach { ss: SoftwareSystem ->
ss.containers.forEach { co: Container ->
val tech: String? = co.technology?.trim()
if (!tech.isNullOrEmpty()) {
co.addTags(tech)
}
}
}
I just updated to the latest version and was doing a little testing and noticed that the perspectives button is no longer appearing for me. To verify it wasn't a DSL issue on my end, I downloaded the perspectives sample from the cookbook and it's behaving the same way. Is anyone else experiencing the same issue?
Hello Simon,
issue #22 is back. This time I get the following error showed in Console:
`Type Error: structurizr.workspace.getName is not a function"
I don't know how reproducible this is, but here's a walkthrough of what I did, along with a gist of the error log
This has happened several times. We're using source control for workspace.dsl
and workspace.json
. I cannot use the undo layout changes button, as it seems to have also destroyed all history in the process.
attached error log
https://gist.github.com/ss-traviswilliams/785a90fdfd03c6195a8f746901348c72
The title says it all, when you're inside of Structurizr Lite, you can click throughout the diagrams, but when you generate the offline HTML page, you don't have this option.
The mouse shows a (+) Zoom icon, however double clicking doesn't do anything.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.