我正在使用Gradle构建,其中包含:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
repositories {
flatDir { dirs "${System.env.JAVA_HOME}/jre/lib" }
}
dependencies {
compile name: 'rt'
}
Run Code Online (Sandbox Code Playgroud)
它构建,这很棒,但是eclipse插件让我在rt.jar类上遇到困难:
访问限制:由于对所需库的限制,无法访问XMLSerializer类型/usr/local/apps/jdk1.8.0_11/jre/lib/rt.jar
我明白了
现在我知道你会告诉我不要使用那些课程.但你知道它是怎么回事,我正在研究一个古老的项目,我现在只需要让它工作.
我的第一个问题是:限制信息位于何处?
显然:我怎么能绕过那个?我想把它作为神器上传到我的Nexus仓库,还有什么比这更容易的?
升级到d3.js v4.1.1后,此行:
d3.layout.tree()
Run Code Online (Sandbox Code Playgroud)
产生错误:
Cannot read property 'tree' of undefined
Run Code Online (Sandbox Code Playgroud)
看起来树形布局已从v4中删除了?https://github.com/d3/d3/blob/master/API.md
这些示例仍然使用v3 API:http: //bl.ocks.org/mbostock/1093025
布局真的消失了还是重命名了?
我通过设置使用Log4J2"使所有记录器异步"部分:
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.
Run Code Online (Sandbox Code Playgroud)
https://logging.apache.org/log4j/2.x/manual/async.html
我处理了很多日志,然后在退出之前停止了appender:
org.apache.logging.log4j.core.Logger coreLogger = (org.apache.logging.log4j.core.Logger) logger;
org.apache.logging.log4j.core.LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) coreLogger.getContext();
Map<String, Appender> appenders = context.getConfiguration().getAppenders();
for (Appender appender : appenders.values()) {
appender.stop();
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,我希望它将刷新异步appender并在退出程序之前将剩余的日志写入磁盘.
但这是发生的事情:
2015-05-19 14:09:58,540 ERROR Attempted to append to non-started appender myFileAppender
Exception in thread "AsyncLogger-1" java.lang.RuntimeException: org.apache.logging.log4j.core.appender.AppenderLoggingException: Attempted to append to non-started appender myFileAppender
at com.lmax.disruptor.FatalExceptionHandler.handleEventException(FatalExceptionHandler.java:45)
at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:147)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.logging.log4j.core.appender.AppenderLoggingException: Attempted to append to non-started appender myFileAppender
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409)
at org.apache.logging.log4j.core.Logger$PrivateConfig.logEvent(Logger.java:288) …Run Code Online (Sandbox Code Playgroud) 我只更改了一个源文件并重新启动了构建:
$ gradle jar
Incremental java compilation is an incubating feature.
:compileJava
Full recompilation is required because 'XXX.java' was changed.
Analysis took 0.241 secs.
Run Code Online (Sandbox Code Playgroud)
我的gradle配置有:
compileJava {
options.fork = true
options.incremental = true
}
Run Code Online (Sandbox Code Playgroud)
我希望Gradle只重新编译XXX.java,它不是应该做的吗?
如何在Windows下获取打开的文件描述符的数量?
在unix上有这样的:
UnixOperatingSystemMXBean.getOpenFileDescriptorCount()
Run Code Online (Sandbox Code Playgroud)
但似乎没有相同的窗口?
使用9-ea + 171,Maven 3.5.0
我正在用这个module-info.java编译一个项目:
module org.project {
}
Run Code Online (Sandbox Code Playgroud)
但它失败了一个神秘的错误:
[ERROR] Failed to parse module-info:
[ERROR] With qdox: null
(...)
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project rli-stubs: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile failed: Failed to parse module-info -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project rli-stubs: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile failed: Failed to parse module-info
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
at …Run Code Online (Sandbox Code Playgroud) 我想让客户端通过服务器相互查询而没有延迟(=没有轮询间隔).
示例:服务器S,客户端A和B.
客户端A想要请求客户端B.客户端A将向服务器S发出请求,没有问题.然后,服务器S需要能够请求客户端B,但如何在没有轮询的情况下执行此操作?
所有node.js/APE(用于PHP)技术都是为Web设计的,但我没有使用Web服务器.Java是否有接近推送技术/框架的东西,而不是网络?
我真的更喜欢不需要每个客户端使用自己的保留端口的解决方案(例如,我不希望每个客户端最终使用1个WebService)
注意:所有客户端都在同一台计算机上.
这有效:
this.http.get('/doesntexist1')
.finally(() => console.log('finally1'))
.subscribe(() => { });
Run Code Online (Sandbox Code Playgroud)
但这不是:
const obs = this.http.get('/doesntexist2');
obs.finally(() => console.log('finally2'))
obs.subscribe(() => { });
Run Code Online (Sandbox Code Playgroud)
两个URL都产生404.
我跑两个,我只看到控制台中显示"finally1",任何想法为什么?
我在执行相同的正则表达式匹配多次时看到一种奇怪的行为:
var r = /(.*)/g
var d = "a"
console.log(r.exec(d))
console.log(r.exec(d))
Run Code Online (Sandbox Code Playgroud)
这会产生:
["a", "a"]
["", ""]
Run Code Online (Sandbox Code Playgroud)
为什么第二次没有匹配任何东西?
我的印象是Java SE 8的发布将与Java EE 8一起发布,但我无法在任何地方找到它.
所以2之间没有联系?Java SE 8仍然与Java EE 7一起使用?
考虑这个例子有2个圆圈(红色和蓝色):
<svg width="500px" height="500px">
<circle cx="100" cy="50" r="40" fill="red" id="redcircle" />
<g transform="translate(200,-20)">
<g transform="scale(2)">
<g transform="rotate(45)">
<g transform="translate(5,10)">
<circle cx="100" cy="50" r="40" fill="blue" id="bluecircle" />
</g>
</g>
</g>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法编写通用函数,如:
function move(selection){
// ???
}
Run Code Online (Sandbox Code Playgroud)
这将允许写入move("#redcircle")或者move("#bluecircle")将目标元素100px可视地移动到右侧(例如).