perwendel / spark-debug-tools Goto Github PK
View Code? Open in Web Editor NEWThis project forked from mschurr/spark-whoops
Better error pages for the Spark Java micro-framework.
License: Apache License 2.0
This project forked from mschurr/spark-whoops
Better error pages for the Spark Java micro-framework.
License: Apache License 2.0
I don't think this project should shade all of its dependencies. As expected, it produces tons of warnings when used with SparkJava itself:
[WARNING] jetty-http-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 53 overlapping classes:
[WARNING] - org.eclipse.jetty.http.HttpParser$HttpHandler
[WARNING] - org.eclipse.jetty.http.BadMessageException
[WARNING] - org.eclipse.jetty.http.HttpGenerator$PreparedResponse
[WARNING] - org.eclipse.jetty.http.HttpParser$1
[WARNING] - org.eclipse.jetty.http.HttpParser$IllegalCharacterException
[WARNING] - org.eclipse.jetty.http.PathMap$PathSet
[WARNING] - org.eclipse.jetty.http.HttpField$IntValueHttpField
[WARNING] - org.eclipse.jetty.http.HttpVersion
[WARNING] - org.eclipse.jetty.http.HttpFieldPreEncoder
[WARNING] - org.eclipse.jetty.http.HttpParser$CharState
[WARNING] - 43 more...
[WARNING] commons-io-2.1.jar, spark-debug-tools-0.5.jar define 104 overlapping classes:
[WARNING] - org.apache.commons.io.FileCleaningTracker
[WARNING] - org.apache.commons.io.comparator.SizeFileComparator
[WARNING] - org.apache.commons.io.input.CloseShieldInputStream
[WARNING] - org.apache.commons.io.filefilter.EmptyFileFilter
[WARNING] - org.apache.commons.io.monitor.FileEntry
[WARNING] - org.apache.commons.io.output.ThresholdingOutputStream
[WARNING] - org.apache.commons.io.input.TailerListener
[WARNING] - org.apache.commons.io.IOExceptionWithCause
[WARNING] - org.apache.commons.io.comparator.PathFileComparator
[WARNING] - org.apache.commons.io.filefilter.NotFileFilter
[WARNING] - 94 more...
[WARNING] spark-debug-tools-0.5.jar, javax.servlet-api-3.1.0.jar define 79 overlapping classes:
[WARNING] - javax.servlet.http.Cookie
[WARNING] - javax.servlet.ServletContext
[WARNING] - javax.servlet.Registration
[WARNING] - javax.servlet.http.HttpSessionListener
[WARNING] - javax.servlet.http.HttpSessionContext
[WARNING] - javax.servlet.FilterChain
[WARNING] - javax.servlet.http.WebConnection
[WARNING] - javax.servlet.http.HttpServletRequestWrapper
[WARNING] - javax.servlet.http.HttpSessionAttributeListener
[WARNING] - javax.servlet.http.HttpSessionBindingListener
[WARNING] - 69 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-server-9.3.6.v20151106.jar define 217 overlapping classes:
[WARNING] - org.eclipse.jetty.server.handler.ManagedAttributeListener
[WARNING] - org.eclipse.jetty.server.session.JDBCSessionIdManager$SessionTableSchema
[WARNING] - org.eclipse.jetty.server.ServletRequestHttpWrapper
[WARNING] - org.eclipse.jetty.server.session.HashSessionManager$Saver
[WARNING] - org.eclipse.jetty.server.ShutdownMonitor$1
[WARNING] - org.eclipse.jetty.server.HttpInput$1
[WARNING] - org.eclipse.jetty.server.UserIdentity$Scope
[WARNING] - org.eclipse.jetty.server.AsyncContextState$1
[WARNING] - org.eclipse.jetty.server.handler.ScopedHandler
[WARNING] - org.eclipse.jetty.server.handler.AbstractHandler
[WARNING] - 207 more...
[WARNING] websocket-common-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 111 overlapping classes:
[WARNING] - org.eclipse.jetty.websocket.common.events.annotated.InvalidSignatureException
[WARNING] - org.eclipse.jetty.websocket.common.io.FrameFlusher$1
[WARNING] - org.eclipse.jetty.websocket.common.extensions.ExtensionStack$Flusher
[WARNING] - org.eclipse.jetty.websocket.common.Generator
[WARNING] - org.eclipse.jetty.websocket.common.events.JettyListenerImpl
[WARNING] - org.eclipse.jetty.websocket.common.events.AbstractEventDriver
[WARNING] - org.eclipse.jetty.websocket.common.frames.PongFrame
[WARNING] - org.eclipse.jetty.websocket.common.message.MessageAppender
[WARNING] - org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint$MsgType
[WARNING] - org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension$Flusher
[WARNING] - 101 more...
[WARNING] websocket-servlet-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 7 overlapping classes:
[WARNING] - org.eclipse.jetty.websocket.servlet.WebSocketCreator
[WARNING] - org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse
[WARNING] - org.eclipse.jetty.websocket.servlet.UpgradeHttpServletRequest
[WARNING] - org.eclipse.jetty.websocket.servlet.WebSocketServlet
[WARNING] - org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest
[WARNING] - org.eclipse.jetty.websocket.servlet.WebSocketServletFactory
[WARNING] - org.eclipse.jetty.websocket.servlet.WebSocketServletFactory$Loader
[WARNING] spark-debug-tools-0.5.jar, websocket-api-9.3.6.v20151106.jar define 44 overlapping classes:
[WARNING] - org.eclipse.jetty.websocket.api.WebSocketPolicy
[WARNING] - org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect
[WARNING] - org.eclipse.jetty.websocket.api.util.QuoteUtil$DeQuotingStringIterator
[WARNING] - org.eclipse.jetty.websocket.api.BatchMode
[WARNING] - org.eclipse.jetty.websocket.api.SuspendToken
[WARNING] - org.eclipse.jetty.websocket.api.BadPayloadException
[WARNING] - org.eclipse.jetty.websocket.api.WebSocketAdapter
[WARNING] - org.eclipse.jetty.websocket.api.extensions.Extension
[WARNING] - org.eclipse.jetty.websocket.api.WebSocketException
[WARNING] - org.eclipse.jetty.websocket.api.CloseException
[WARNING] - 34 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-xml-9.3.6.v20151106.jar define 13 overlapping classes:
[WARNING] - org.eclipse.jetty.xml.ConfigurationProcessorFactory
[WARNING] - org.eclipse.jetty.xml.XmlParser$Node
[WARNING] - org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration
[WARNING] - org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration$AttrOrElementNode
[WARNING] - org.eclipse.jetty.xml.ConfigurationProcessor
[WARNING] - org.eclipse.jetty.xml.XmlParser$Handler
[WARNING] - org.eclipse.jetty.xml.XmlConfiguration
[WARNING] - org.eclipse.jetty.xml.XmlConfiguration$1
[WARNING] - org.eclipse.jetty.xml.XmlAppendable
[WARNING] - org.eclipse.jetty.xml.XmlParser
[WARNING] - 3 more...
[WARNING] commons-lang3-3.1.jar, spark-debug-tools-0.5.jar define 151 overlapping classes:
[WARNING] - org.apache.commons.lang3.text.StrMatcher$NoMatcher
[WARNING] - org.apache.commons.lang3.SerializationUtils
[WARNING] - org.apache.commons.lang3.text.translate.NumericEntityEscaper
[WARNING] - org.apache.commons.lang3.text.StrMatcher$StringMatcher
[WARNING] - org.apache.commons.lang3.LocaleUtils
[WARNING] - org.apache.commons.lang3.concurrent.ConcurrentRuntimeException
[WARNING] - org.apache.commons.lang3.concurrent.ConcurrentException
[WARNING] - org.apache.commons.lang3.CharRange
[WARNING] - org.apache.commons.lang3.concurrent.AtomicInitializer
[WARNING] - org.apache.commons.lang3.builder.IDKey
[WARNING] - 141 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-util-9.3.6.v20151106.jar define 228 overlapping classes:
[WARNING] - org.eclipse.jetty.util.MemoryUtils$1
[WARNING] - org.eclipse.jetty.util.ArrayQueue
[WARNING] - org.eclipse.jetty.util.resource.URLResource
[WARNING] - org.eclipse.jetty.util.Scanner$DiscreteListener
[WARNING] - org.eclipse.jetty.util.log.StacklessLogging
[WARNING] - org.eclipse.jetty.util.preventers.Java2DLeakPreventer
[WARNING] - org.eclipse.jetty.util.component.Dumpable
[WARNING] - org.eclipse.jetty.util.resource.JarFileResource
[WARNING] - org.eclipse.jetty.util.Promise
[WARNING] - org.eclipse.jetty.util.Scanner
[WARNING] - 218 more...
[WARNING] jetty-servlet-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 46 overlapping classes:
[WARNING] - org.eclipse.jetty.servlet.ServletHandler$Default404Servlet
[WARNING] - org.eclipse.jetty.servlet.FilterMapping
[WARNING] - org.eclipse.jetty.servlet.ServletContextHandler
[WARNING] - org.eclipse.jetty.servlet.Holder$1
[WARNING] - org.eclipse.jetty.servlet.FilterMapping$1
[WARNING] - org.eclipse.jetty.servlet.ServletContextHandler$ServletContainerInitializerCaller
[WARNING] - org.eclipse.jetty.servlet.Invoker
[WARNING] - org.eclipse.jetty.servlet.FilterHolder
[WARNING] - org.eclipse.jetty.servlet.Holder
[WARNING] - org.eclipse.jetty.servlet.jmx.HolderMBean
[WARNING] - 36 more...
[WARNING] spark-debug-tools-0.5.jar, spark-core-2.5.jar define 62 overlapping classes:
[WARNING] - spark.resource.ClassPathResource
[WARNING] - spark.Routable
[WARNING] - spark.Route
[WARNING] - spark.utils.ObjectUtils
[WARNING] - spark.HaltException
[WARNING] - spark.ResponseTransformer
[WARNING] - spark.route.HttpMethod
[WARNING] - spark.resource.ExternalResource
[WARNING] - spark.resource.Resource
[WARNING] - spark.Spark
[WARNING] - 52 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-webapp-9.3.6.v20151106.jar define 40 overlapping classes:
[WARNING] - org.eclipse.jetty.webapp.FragmentDescriptor
[WARNING] - org.eclipse.jetty.webapp.WebAppContext$1
[WARNING] - org.eclipse.jetty.webapp.WebAppContext
[WARNING] - org.eclipse.jetty.webapp.AbstractConfiguration
[WARNING] - org.eclipse.jetty.webapp.WebAppContext$Context
[WARNING] - org.eclipse.jetty.webapp.FragmentDescriptor$OtherType
[WARNING] - org.eclipse.jetty.webapp.WebDescriptor$1
[WARNING] - org.eclipse.jetty.webapp.WebInfConfiguration$2
[WARNING] - org.eclipse.jetty.webapp.Descriptor
[WARNING] - org.eclipse.jetty.webapp.CloneConfiguration
[WARNING] - 30 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-security-9.3.6.v20151106.jar define 52 overlapping classes:
[WARNING] - org.eclipse.jetty.security.MappedLoginService
[WARNING] - org.eclipse.jetty.security.SpnegoUserPrincipal
[WARNING] - org.eclipse.jetty.security.authentication.DigestAuthenticator
[WARNING] - org.eclipse.jetty.security.UserDataConstraint
[WARNING] - org.eclipse.jetty.security.PropertyUserStore$UserListener
[WARNING] - org.eclipse.jetty.security.authentication.FormAuthenticator
[WARNING] - org.eclipse.jetty.security.UserAuthentication
[WARNING] - org.eclipse.jetty.security.MappedLoginService$Anonymous
[WARNING] - org.eclipse.jetty.security.DefaultAuthenticatorFactory
[WARNING] - org.eclipse.jetty.security.SecurityHandler
[WARNING] - 42 more...
[WARNING] websocket-server-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 18 overlapping classes:
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.PathSpec
[WARNING] - org.eclipse.jetty.websocket.server.ServletWebSocketResponse
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.PathMappings$MappedResource
[WARNING] - org.eclipse.jetty.websocket.server.WebSocketServerFactory
[WARNING] - org.eclipse.jetty.websocket.server.WebSocketHandler$Simple
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.PathSpecGroup
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.PathMappings
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.RegexPathSpec
[WARNING] - org.eclipse.jetty.websocket.server.pathmap.ServletPathSpec$1
[WARNING] - org.eclipse.jetty.websocket.server.WebSocketHandler
[WARNING] - 8 more...
[WARNING] spark-debug-tools-0.5.jar, slf4j-api-1.7.13.jar define 28 overlapping classes:
[WARNING] - org.slf4j.helpers.SubstituteLogger
[WARNING] - org.slf4j.helpers.NamedLoggerBase
[WARNING] - org.slf4j.helpers.NOPMDCAdapter
[WARNING] - org.slf4j.MarkerFactory
[WARNING] - org.slf4j.helpers.BasicMarker
[WARNING] - org.slf4j.spi.LoggerFactoryBinder
[WARNING] - org.slf4j.MDC$MDCCloseable
[WARNING] - org.slf4j.spi.LocationAwareLogger
[WARNING] - org.slf4j.helpers.MessageFormatter
[WARNING] - org.slf4j.helpers.Util$ClassContextSecurityManager
[WARNING] - 18 more...
[WARNING] spark-debug-tools-0.5.jar, jetty-io-9.3.6.v20151106.jar define 73 overlapping classes:
[WARNING] - org.eclipse.jetty.io.AbstractEndPoint$2
[WARNING] - org.eclipse.jetty.io.WriteFlusher$FailedState
[WARNING] - org.eclipse.jetty.io.ManagedSelector$Acceptor
[WARNING] - org.eclipse.jetty.io.ByteBufferPool$Lease
[WARNING] - org.eclipse.jetty.io.ManagedSelector$SelectableEndPoint
[WARNING] - org.eclipse.jetty.io.ManagedSelector$1
[WARNING] - org.eclipse.jetty.io.ClientConnectionFactory
[WARNING] - org.eclipse.jetty.io.Connection$UpgradeTo
[WARNING] - org.eclipse.jetty.io.LeakTrackingByteBufferPool$1
[WARNING] - org.eclipse.jetty.io.WriterOutputStream
[WARNING] - 63 more...
[WARNING] websocket-client-9.3.6.v20151106.jar, spark-debug-tools-0.5.jar define 16 overlapping classes:
[WARNING] - org.eclipse.jetty.websocket.client.masks.RandomMasker
[WARNING] - org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager
[WARNING] - org.eclipse.jetty.websocket.client.ClientUpgradeResponse
[WARNING] - org.eclipse.jetty.websocket.client.WebSocketClient
[WARNING] - org.eclipse.jetty.websocket.client.ClientUpgradeRequest
[WARNING] - org.eclipse.jetty.websocket.client.io.UpgradeConnection$State
[WARNING] - org.eclipse.jetty.websocket.client.io.WebSocketClientConnection
[WARNING] - org.eclipse.jetty.websocket.client.io.ConnectionManager
[WARNING] - org.eclipse.jetty.websocket.client.masks.FixedMasker
[WARNING] - org.eclipse.jetty.websocket.client.io.UpgradeConnection$SendUpgradeRequest
[WARNING] - 6 more...
[WARNING] maven-shade-plugin has detected that some class files are
[WARNING] present in two or more JARs. When this happens, only one
[WARNING] single version of the class is copied to the uber jar.
[WARNING] Usually this is not harmful and you can skip these warnings,
[WARNING] otherwise try to manually exclude artifacts based on
[WARNING] mvn dependency:tree -Ddetail=true and the above output.
[WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/
This is my second issue on this nice project, I hope it's not dead!
Any help would be appreciated.
The details:
Using Maven 4
versions of spark dependencies in project.
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5.5</version>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-debug-tools</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-template-freemarker</artifactId>
<version>2.3</version>
</dependency>
Partial dump of error message:
On my end, forced an exception
Caught Exception:
FreeMarker template error:
The following has evaluated to null or missing:
==> message [in template "freemarker/base.ftl" at line 6, column 14]
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
FTL stack trace ("~" means nesting-related):
- Failed at: ${message.get("WEBSITE_TITLE")} [in template "freemarker/base.ftl" in macro "masterTemplate" at line 6, column 12]
- Reached through: @layout.masterTemplate title="index" [in template "freemarker/index/index.ftl" at line 2, column 1]
This is the DebugScreen bit:
Caught Exception Rendering DebugScreen:
java.lang.IllegalArgumentException: freemarker.core._MiscTemplateException: Can't convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy default computer-language format, and hence isn't accepted.
Tip: If you just want "true"/"false" result as you are generting computer-language output, use "?c", like ${myBool?c}.
Tip: You can write myBool?string('yes', 'no') and like to specify boolean formatting in place.
Tip: If you need the same two values on most places, the programmers should set the "boolean_format" setting to something like "yes,no".
FTL stack trace ("~" means nesting-related):
- Failed at: ${data[k]} auto-escaped [in template "debugscreen.ftl" at line 107, column 54]
Hi, just tried this, works really nice!
It would be nice if it supported more JVM languages, I'm using Kotlin myself but I guess it could use some Scala support too.
We can already set the sources path, so it actually displays the Kotlin sources! Yay!
The only issue is that it does not syntax-highlight it correctly. Whatever syntax highlighter you use, does it support other JVM languages? It would be nice :)
We should show stack traces for each exception in the chain (while(e.getCause() != null)) to provide more information.
I got some error when using the debug screen:
I'm using:
SCHWERWIEGEND: Error executing FreeMarker template
FreeMarker template error:
Can't convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy default computer-language format, and hence isn't accepted.
freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...]
at freemarker.core.Configurable.formatBoolean(Configurable.java:715)
at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:369)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.BuiltInForString._eval(BuiltInForString.java:26)
at freemarker.core.Expression.eval(Expression.java:78)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.MixedContent.accept(MixedContent.java:54)
at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
at freemarker.core.IteratorBlock$IterationContext.executeNestedBlockInner(IteratorBlock.java:240)
at freemarker.core.IteratorBlock$IterationContext.executeNestedBlock(IteratorBlock.java:220)
at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:194)
at freemarker.core.Environment.visitIteratorBlock(Environment.java:572)
at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:78)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:64)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.MixedContent.accept(MixedContent.java:54)
at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
at freemarker.core.IfBlock.accept(IfBlock.java:48)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.MixedContent.accept(MixedContent.java:54)
at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
at freemarker.core.IteratorBlock$IterationContext.executeNestedBlockInner(IteratorBlock.java:240)
at freemarker.core.IteratorBlock$IterationContext.executeNestedBlock(IteratorBlock.java:220)
at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:194)
at freemarker.core.Environment.visitIteratorBlock(Environment.java:572)
at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:78)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:64)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.MixedContent.accept(MixedContent.java:54)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.EscapeBlock.accept(EscapeBlock.java:48)
at freemarker.core.Environment.visit(Environment.java:324)
at freemarker.core.Environment.process(Environment.java:302)
at freemarker.template.Template.process(Template.java:325)
at spark.template.freemarker.FreeMarkerEngine.render(FreeMarkerEngine.java:70)
at spark.debug.DebugScreen.handleThrowable(DebugScreen.java:97)
at spark.debug.DebugScreen.handle(DebugScreen.java:70)
at spark.Service$1.handle(Service.java:550)
at spark.http.matching.GeneralError.modify(GeneralError.java:47)
at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:139)
at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1568)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:564)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:278)
at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:148)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
at java.lang.Thread.run(Thread.java:748)
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.