小编Eth*_*roy的帖子

如何在Maven中配置编码?

当我maven install在我的多模块maven项目上运行时,我总是得到以下输出:

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
Run Code Online (Sandbox Code Playgroud)

所以,我google了一下,但我能找到的是我必须添加:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Run Code Online (Sandbox Code Playgroud)

...到我的pom.xml.但它已经存在(在父母中pom.xml).

配置<encoding>maven-resources-plugin或maven-compiler-plugin也无法修复它.

所以有什么问题?

java encoding maven-2 maven-3 maven

346
推荐指数
5
解决办法
20万
查看次数

在Java中评估数学表达式的方法

在我的一个项目中,我想添加一个功能,例如用户可以在公式中提供

sin (x + pi)/2 + 1
Run Code Online (Sandbox Code Playgroud)

我在我的Java应用程序中使用它

/**
 * The formula provided by the user
 */
private String formula; // = "sin (x + pi)/2 + 1"

/*
 * Evaluates the formula and computes the result by using the
 * given value for x
 */
public double calc(double x) {
    Formula f = new Formula(formula);
    f.setVar("x", x);
    return f.calc();
    // or something similar
}
Run Code Online (Sandbox Code Playgroud)

我如何评估数学表达式?

java math formula

49
推荐指数
3
解决办法
7万
查看次数

parallelStream() 使用 JAXB-API 导致 ClassNotFoundException

在我们的应用程序中,我们有时会遇到以下异常:

javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
Run Code Online (Sandbox Code Playgroud)

我们已经发现只有当我们使用时才会发生这种情况,Collection.parallelStream()但如果我们使用Collection.stream().

我们看到 JAXBThread.currentThread().getContextClassLoader()用于加载类。我们还看到,当使用 时parallelStream(),执行我们命令的线程使用不同的类加载器。有时是org.apache.catalina.loader.WebappClassLoader,有时是jdk.internal.loader.ClassLoaders.AppClassLoader

现在看来,AppClassLoader不知道 JAXB 依赖项,而WebappClassLoader

我们正在使用 Java 11 和以下 Maven 依赖项:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

知道有什么问题吗?怎么可能,AppClassLoader不知道我们的依赖关系?

java jaxb classloader java-11

22
推荐指数
2
解决办法
1736
查看次数

Android 4.1.1上的ComposeShader问题

我只是想为我的Android应用程序实现一个颜色选择器,并在Android 4.1.1上遇到了一个奇怪的问题.以下代码不会在Android 4.1.1上创建预期的渐变,但它在2.3.7上创建:

Shader fadeInRight = new LinearGradient(0, 0, pWidth, 0, 0x00000000, 0xFF000000, Shader.TileMode.CLAMP);
Shader blackToWhite = new LinearGradient(0, 0, 0, pHeight, 0xFF000000, 0xFFFFFFFF, Shader.TileMode.CLAMP);
Shader whiteMask = new ComposeShader(blackToWhite, fadeInRight, PorterDuff.Mode.DST_IN);
Shader blackToColor = new LinearGradient(0, 0, pWidth, 0, 0xFF000000, hue, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(blackToColor, whiteMask, PorterDuff.Mode.SCREEN);
paint.setShader(shader);
...
canvas.drawRect(new Rect(0, 0, pWidth, pHeight), paint);
Run Code Online (Sandbox Code Playgroud)

这是问题所在: 在此输入图像描述

(忽略Android 4.1.1下面的红色框.我只是谈论上面的渐变)

任何想法有什么不对?我认为我的代码中缺少一些东西,但我不知道,是什么.

编辑#1: 如果我只是用whiteMasksetShader,我也得到了两个系统不同的结果:通过梯度矩形照着2.3.7我可以看到配置菜单(这是弹出后面)的文本.此外,从左上边缘到右下边缘(黑色到白色)有一个渐变,但4.1.1上的渐变从左到右水平.所以这似乎是一个问题ComposeShader

编辑#2: 我找到了一个更简单的例子来描述这个问题:

Shader shader1 = new LinearGradient(0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

android gradient canvas android-4.2-jelly-bean

15
推荐指数
1
解决办法
2564
查看次数

使用 WebFlux 时如何使用 HTTP DELETE 发送正文?

我想访问一个提供DELETE端点的 HTTP API 。这个特定的端点需要一个项目列表(我想删除)作为 JSON 正文。

现在,我的问题是,我正在使用 Spring Webflux。但它的WebClient没有给我发送DELETE请求的可能性。对于 a POST,我会这样做:

webClient.post()
         .uri("/foo/bar")
         .body(...)
         .exchange()
Run Code Online (Sandbox Code Playgroud)

但是对于DELETE,我得到了一个RequestHeadersSpec,它没有给我提供以下选项的选项body(...)

webClient.delete()
         .uri("/foo/bar")
         .body(...)       <--- METHOD DOES NOT EXIST
         .exchange()
Run Code Online (Sandbox Code Playgroud)

那么,在客户端使用 Spring Webflux 实现这一目标的方法是什么?

java spring http spring-webflux

9
推荐指数
1
解决办法
3220
查看次数

git clone以Broken Pipe结尾

我有一个非常大的git存储库,想要从它克隆.在一台机器上(ArchLinux与git版本2.2.2)一切正常......

Cloning into 'foo'
remote: Counting objects: 2372505, done
remote: Compressing objects: 100% (456914/456914), done.
Receiving objects: 100% (2372505/2372505), 3.81 GiB | 6.20 MiB/s, done.
...
Run Code Online (Sandbox Code Playgroud)

...但是在另一台机器上(带有git版本2.3.0的Ubuntu,也尝试过1.7.0.4),我只看到以下内容:

Cloning into 'foo'
remote: Counting objects: 2372505, done.
Run Code Online (Sandbox Code Playgroud)

几个小时后,它结束了

Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

知道问题是什么?

顺便说说:

  • 远程端是一个gitlab服务器.
  • 我在两种情况下都使用SSH.
  • 第一台(工作)机器通过VPN(100 MBit/s)连接.
  • 第二台(非工作)机器与gitlab服务器位于同一千兆位子网中.

git ssh git-clone

8
推荐指数
1
解决办法
1万
查看次数

LaTeX:每个字母后的空格

我想定义一个LaTeX命令,在每个字母后插入一个空格.

所以,如果我补充一下

\addSpaces{someText}
Run Code Online (Sandbox Code Playgroud)

结果应该是

s o m e T e x t 
Run Code Online (Sandbox Code Playgroud)

我怎么能实现这个目标?

背景:我希望每个字母都加下划线,但这些字母应该在字母之间分开:

s o m e T e x t 
_ _ _ _ _ _ _ _

NOT:
s o m e T e x t
_______________ 
Run Code Online (Sandbox Code Playgroud)

latex

6
推荐指数
1
解决办法
2628
查看次数

使用 dput 将包上传到 launchpad-ppa:在配置中找不到主机

我正在尝试使用dput. 正如launchpad.net 帮助中提到的,我只需要使用以下命令:

dput ppa:my-lp-id/ppa <source.changes>
Run Code Online (Sandbox Code Playgroud)

我的 PPA 被称为main. 我使用以下命令构建了包debuild -S并尝试上传结果foo_0.1.2_source.changes文件:

dput ppa:myid/main foo_0.1.2_source.changes
Run Code Online (Sandbox Code Playgroud)

但这导致

No host ppa:myid/main found in config
Run Code Online (Sandbox Code Playgroud)

在我的dput.cf我有以下内容:

[ppa]
fqdn                    = ppa.launchpad.net
method                  = ftp
# replace <launchpad-id> with your Launchpad ID
#incoming               = ~<launchpad-id>/ubuntu
incoming                = ~myid/ubuntu
login                   = anonymous
Run Code Online (Sandbox Code Playgroud)

所以,主人肯定在那里,但这里有什么问题?

编辑:似乎是 ArchLinux 上的 dput 问题。Ubuntu 上的相同命令非常有效。

packaging debian-based

6
推荐指数
1
解决办法
1076
查看次数

我可以在 gatsby-plugin-manifest 中为 favicon 使用不同的图标吗

我使用gatsby-plugin-manifestwithicon设置为一个图标,这对于 Android 和 iOS 设备来说非常好。但现在我想定义一个用于浏览器的附加图标(大小为 32x32 像素,文本较少)。但我也想保留其他图标。

那可能吗?如果是,怎么办?

gatsby

6
推荐指数
1
解决办法
3474
查看次数

JPA @ManyToMany只在一边?

我正在尝试刷新@ManyToMany关系,但它被清除了......

我的Project类看起来像这样:

@Entity
public class Project {
    ...
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(name = "PROJECT_USER",
    joinColumns = @JoinColumn(name = "PROJECT_ID", referencedColumnName = "ID"),
    inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
    private Collection<User> users;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我没有 - 我不想要 - 用户实体中的项目集合.

当我查看生成的数据库表时,它们看起来很好.它们包含所有列和约束(主键/外键).

但是当我持有一个包含用户列表的项目(并且用户仍在数据库中)时,映射表不会更新得到更新,但是当我之后刷新项目时,将清除用户列表.

为了更好地理解:

Project project = ...; // new project with users that are available in the db
System.out.println(project getUsers().size()); // prints 5
em.persist(project);
System.out.println(project getUsers().size()); // prints 5
em.refresh(project);
System.out.println(project getUsers().size()); // prints 0 …
Run Code Online (Sandbox Code Playgroud)

java many-to-many hibernate jpa

5
推荐指数
1
解决办法
2377
查看次数