我有一个非常奇怪的错误与gradle(1.11)和javadoc任务.我有以下链接build.gradle:
javadoc.options.links("http://docs.oracle.com/javase/7/docs/api");
Run Code Online (Sandbox Code Playgroud)
我现在使用Java 8(从Oracle下载的JDK),这是javadoc任务的输出:
fge@alustriel:~/src/perso/largetext$ java -version; ./gradlew clean javadoc
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
:clean
:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
:processResources
:classes
:javadoc
javadoc: warning - Error fetching URL: http://docs.oracle.com/javase/7/docs/api
javadoc: warning - Error fetching URL: http://jsr-305.googlecode.com/svn/trunk/javadoc
javadoc: warning - Error fetching URL: http://docs.guava-libraries.googlecode.com/git-history/v16.0.1/javadoc
3 warnings
BUILD SUCCESSFUL
Total time: 7.726 secs
Run Code Online (Sandbox Code Playgroud)
事实上,当我查看javadoc时,所有外部链接都不存在; 但是,如果我使用Java …
虽然一开始完全不相关,但这个问题让我想知道......
Java 的正则表达式基于Strings;Strings 是 s 的序列(数组)char;和chars 最终是 UTF-16 代码单元。
后者意味着单个char可以匹配 BMP 内的任何 Unicode 代码点,即从 U+0000 到 U+FFFF。
然而,在 BMP 之外,char单个代码点需要两个s(一个用于前导代理,另一个用于尾随代理);从我所见,除了专用的语法引擎,我看不到 Java 正则表达式(由 定义java.util.regex.Pattern)为此类代码点定义“字符类”的方法,因为在BMP。
尽管可以编写代码来为此类范围生成正则表达式(好吧,用作正则表达式的字符串文字),但是否存在Pattern未记录在案并允许这样做的现有机制?
注:杰克逊2.1.x.
问题很简单但到目前为止我找不到解决方案.我浏览了现有的文档等,但找不到答案.
基类是这样的:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "op")
@JsonSubTypes({
@Type(name = "add", value = AddOperation.class),
@Type(name = "copy", value = CopyOperation.class),
@Type(name = "move", value = MoveOperation.class),
@Type(name = "remove", value = RemoveOperation.class),
@Type(name = "replace", value = ReplaceOperation.class),
@Type(name = "test", value = TestOperation.class)
})
public abstract class JsonPatchOperation
{
/*
* Note: no need for a custom deserializer, Jackson will try and find a
* constructor with a single string argument and use it …Run Code Online (Sandbox Code Playgroud) 答案,请看下面 - 士气:从不.split()单独打电话; 如果你想要理智的行为,总是给它一个-1的长度参数.但不是0!
在对javadoc的Pattern.split()状态如下:
此方法返回的数组包含输入序列的每个子字符串,该子字符串由与此模式匹配的另一个子序列终止,或者由输入序列的末尾终止.
见证这段代码:
private static final Pattern UNDERSCORE = Pattern.compile("_");
public static void main(final String... args)
{
System.out.println(UNDERSCORE.split("_").length);
}
Run Code Online (Sandbox Code Playgroud)
现在,引用javadoc,数组应该包含输入的子字符串(引用):
UNDERSCORE显然匹配);然而,上面的代码打印出来0.为什么?这是一个已知的错误?(imnsho是的,见下文)还有哪些.split()不遵守合同的情况?(再见下文)
答案(右下方的解释性文字)
使用a时Pattern,单参数.split()方法相当于使用参数调用双参数方法0.
这就是错误所在.如果参数为0,则从结果中删除从数组末尾"向下"到第一个非空元素的所有空字符串.
如果在阅读本文之前,你不知道脑死亡设计的决定是什么,现在你知道了.这是默认行为更加危险.
解决方案是始终使用方法的完整形式.split()并给它一个负长度参数.这里,选择-1.在这种情况下,.split()表现得很明智:
private static final Pattern UNDERSCORE = Pattern.compile("_");
public static void main(final String... args)
{
System.out.println(UNDERSCORE.split("_").length);
System.out.println(UNDERSCORE.split("__").length);
System.out.println(UNDERSCORE.split("_x_").length); …Run Code Online (Sandbox Code Playgroud) 我对这两者感到困惑,如果是这样,他们有不同的功能吗?
StringBuffer(CharSequence chars)
Run Code Online (Sandbox Code Playgroud)
和
StringBuffer(String str)
Run Code Online (Sandbox Code Playgroud)
2. String和CharSequence(特殊功能)之间的基本区别是什么?
我有一个文件,或者我从套接字读取; 我读过的数据应该用给定的字符编码进行文本编码.
但即使我指定了一个编码并且最终证明它是错误的,操作也会成功; 而不是任何类型的例外,我?在我的文本中得到了很多:/
有没有办法可以触发失败呢?
环境:
首先,关于架构的快速目标:JavaFX称之为"控制器"我称之为显示器,并且我有一个控制显示元素的视图类.
所有这些视图都继承了一个公共基类:
public abstract class JavafxView<P, D extends JavafxDisplay<P>>
{
protected final Node node;
protected final D display;
protected JavafxView(final String fxmlLocation)
throws IOException
{
final URL url = JavafxView.class.getResource(fxmlLocation);
if (url == null)
throw new IOException(fxmlLocation + ": resource not found");
final FXMLLoader loader = new FXMLLoader(url);
node = loader.load();
display = loader.getController();
}
@SuppressWarnings("unchecked")
@NonFinalForTesting
public <T extends Node> T getNode()
{
return (T) node;
}
@NonFinalForTesting …Run Code Online (Sandbox Code Playgroud) 一切都在主题中,真的.
我没有看到这两种方法之间的行为差异x:
// first version
Method m(ByRef x As whatever)
{
// play with x
}
// second version
Method m(Output x As whatever)
{
// play with x
}
Run Code Online (Sandbox Code Playgroud)
必须有一些理由为什么这两个修饰语都存在,但是我对语言的"掌握"(嗯)不足以理解这些差异.我已经尝试并阅读了文档,搜索它等,到目前为止无济于事.
那么,这两个参数修饰符之间有什么区别?
这是一个令我困惑的问题.javah需要一个字节码编译类的类路径,以生成它的头.
但是javac,据推测,可能会在源代码中构建一个AST,它也可能被使用javah.特别是因为很容易发现原生方法.
那么,为什么javah需要字节码呢?
我的build.gradle文件包含这样的部分,用于将存档上传到SonaType:
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment {
MavenDeployment deployment -> signing.signPom(deployment);
}
// HERE
repository(url: sonatypeRepoURI) {
authentication(userName: sonatypeUsername,
password: sonatypePassword);
}
pom.project {
// etc etc
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在标记的点上HERE,其他希望使用我的构建文件的用户将失败,因为至少没有定义第一个变量:
FAILURE: Build failed with an exception.
* Where:
Build file '/path/to/build.gradle' line: 144
* What went wrong:
A problem occurred evaluating root project 'whateverTheProject'.
> No such property: sonatypeRepoURI for class:
org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
Run Code Online (Sandbox Code Playgroud)
如何修改上面的部分,以便用户不受这些未定义的变量的影响?