小编Mar*_*kus的帖子

如何在基于Docker image的java:8-jdk-alpine中使curl可用并保持图像清洁?

我们正在使用运行curl命令的java代码来获取一些结果.

我们已经构建了一个jar文件,jar文件执行得很好

现在,当我们尝试doker化java程序(使用jar)并在docker中运行应用程序时,我们收到此错误:

errorjava.io.IOException: Cannot run program "curl": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at com.ps.api.common.CoreAPI_Spec.executeCoreAPI(CoreAPI_Spec.java:295)
    at com.ps.api.common.CoreAPI_Spec.getAccessTokens(CoreAPI_Spec.java:319)
Run Code Online (Sandbox Code Playgroud)

使用Dockerfile:

FROM ubuntu:16.04
MAINTAINER niro;

# Install prerequisites
RUN apt-get update && apt-get install -y \
curl

FROM java:8-jdk-alpine
# Set the working directory to /app
WORKDIR /Users/******/Desktop/CoreAPI_Jar

# Copy the current directory contents into the container at /app
ADD *******_Automation-0.0.1-SNAPSHOT-jar-with-dependencies.jar ******_Automation-0.0.1-SNAPSHOT-jar-with-dependencies.jar

# Run app.py when the container launches
CMD ["java", "-jar", "******-0.0.1-SNAPSHOT-jar-with-dependencies.jar"]
Run Code Online (Sandbox Code Playgroud)

java docker docker-java

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

为什么类通过自定义类路径容器添加到jar中而不能用于代码完成?

通过代码完成中可见的自定义类路径容器提供的类是什么?

我已成功实现了一个自定义类路径容器,它将库添加到项目中.它将特定文件夹中的所有jar添加到构建路径,除非工作区中有一个具有相同名称的项目,在这种情况下引用项目.

现在这显然似乎有效,当我从其中一个jar中引用一个类时,代码编译,但我没有在代码完成建议中看到该类.当我在我的工作区中有正确的项目时,我在代码完成中看到了这样一个类.

我已经完成了以下步骤来实现这一目标,而我正在部分考虑IBM教程:

  • 实现ClasspathContainerInitializer
  • 实现ClasspathContainerPreferencePage以进行其他配置
  • 实现IClasspathContainer

当我将容器添加到项目中时,我会看到包浏览器中的jar,就像我预期的那样.(只有当没有相应的项目可用时,Jar才会出现,Logging会显示预期的结果)

我可以使用通过类路径容器集成的jar中没有编译器错误的类,它们不能用于代码完成,而在Quick Fixes中可以添加正确的导入.所以我想我可能只是错过了一些扩展点的贡献.

java eclipse eclipse-plugin eclipse-jdt

12
推荐指数
1
解决办法
575
查看次数

LoadLoad屏障真正起作用了什么?

在Java中,当我们有两个线程共享以下变量时:

int a;
volatile int b;
Run Code Online (Sandbox Code Playgroud)

如果线程1执行:

a = 5;
b = 6;
Run Code Online (Sandbox Code Playgroud)

然后在这两条指令之间插入StoreStore屏障,并将'a'刷新回主存储器.

现在,如果线程2:

if(b == 6)
 a++;
Run Code Online (Sandbox Code Playgroud)

在它之间插入一个LoadLoad屏障,我们保证如果'b'的新值可见,那么'a'的新值也是可见的.但实际上这是如何实现的呢?LoadLoad是否使CPU高速缓存/寄存器无效?或者只是指示CPU从CPU再次获取从volatile中读取的变量值?

我找到了有关LoadLoad barrier的信息(http://gee.cs.oswego.edu/dl/jmm/cookbook.html):

LoadLoad Barriers序列:Load1; LoadLoad; Load2确保在Load2访问数据和加载所有后续加载指令之前加载Load1的数据.通常,在执行推测性加载和/或无序处理的处理器上需要显式的LoadLoad障碍,其中等待加载指令可以绕过等待的存储.在保证始终保持负载排序的处理器上,障碍相当于无操作.

但它并没有真正解释如何实现这一目标.

java concurrency volatile

11
推荐指数
1
解决办法
1443
查看次数

java.lang.IllegalArgumentException:不支持:indent-number

public String filter(String message) {
        if (message == null) {
            return null;
        }

        // Remove formatting, transformer fails to handle wrong indentation correctly.
        message = message.replaceAll(">\\s*[\\r\\n]+\\s*", ">");
        message = message.replaceAll("\\s*[\\r\\n]+\\s*", " "); // for wrapped attribute lists

        Source xmlInput = new StreamSource(new StringReader(message));
        StringWriter stringWriter = new StringWriter();
        try {
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            transformerFactory.setAttribute("indent-number", INDENT); // for Java 6

            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", INDENT.toString()); // Java 1.5
            transformer.transform(xmlInput, new StreamResult(stringWriter));

            String pretty = stringWriter.toString();
            pretty = …
Run Code Online (Sandbox Code Playgroud)

java xml xslt

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

如何递归引用泛型参数?

我已经解决了Y-combinator问题.刚才我发现我不能递归地引用泛型参数.

Y = ?f.(?x.f (x x)) (?x.f (x x))
Run Code Online (Sandbox Code Playgroud)

例如:

IntUnaryOperator fact = Y(rec -> n -> n == 0 ? 1 : n * rec.applyAsInt(n - 1));

IntUnaryOperator Y(Function<IntUnaryOperator, IntUnaryOperator> f) {
    return g(g -> f.apply(x -> g.apply(g).applyAsInt(x)));
}

IntUnaryOperator g(G g) {
    return g.apply(g);
}

//        v--- I want to remove the middle-interface `G`
interface G extends Function<G, IntUnaryOperator> {/**/}
Run Code Online (Sandbox Code Playgroud)

:如何在方法上使用泛型参数g以避免引入额外的接口G,并且泛型参数应该避免UNCHECKED警告?

提前致谢.

java generics functional-programming java-8

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

如何在jenkins上跨多个项目构建作业管理常见的ant构建脚本?

我有一组来自不同git存储库的java项目,我想用Jenkins构建它们.

它们共享相同的ant构建脚本,该脚本通过ant导入机制使用项目特定的配置部分(例如,编译类路径).

目前我手动共享这个,但这对于公共部分的更改非常容易出错.

所以我的问题是:在jenkins服务器上跨多个构建作业管理共享ant构建脚本的好方法是什么?

java ant continuous-integration jenkins

4
推荐指数
1
解决办法
2591
查看次数