小编Seb*_*n S的帖子

使用HttpClient通过HTTPS信任所有证书

最近发布了一个关于HttpClient过度Https 的问题(在这里找到).我已经取得了一些进展,但我遇到了新的问题.和我的上一个问题一样,我似乎无法找到适合我的任何地方的例子.基本上,我希望我的客户端接受任何证书(因为我只指向一个服务器),但我一直在接受javax.net.ssl.SSLException: Not trusted server certificate exception.

所以这就是我所拥有的:


    public void connect() throws A_WHOLE_BUNCH_OF_EXCEPTIONS {

        HttpPost post = new HttpPost(new URI(PROD_URL));
        post.setEntity(new StringEntity(BODY));

        KeyStore trusted = KeyStore.getInstance("BKS");
        trusted.load(null, "".toCharArray());
        SSLSocketFactory sslf = new SSLSocketFactory(trusted);
        sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme ("https", sslf, 443));
        SingleClientConnManager cm = new SingleClientConnManager(post.getParams(),
                schemeRegistry);

        HttpClient client = new DefaultHttpClient(cm, post.getParams());
        HttpResponse result = client.execute(post);
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

    W/System.err(  901): javax.net.ssl.SSLException: Not trusted server certificate 
    W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360) 
    W/System.err(  901): …
Run Code Online (Sandbox Code Playgroud)

java ssl https certificate apache-httpclient-4.x

386
推荐指数
9
解决办法
57万
查看次数

远程调试:在端口8787上未连接OpenJDK 11上的Wildfly 14

我正在尝试将调试器连接到在Open JDK 11上运行的Wildlfy。

尽管Wildfly说:

Listening for transport dt_socket at address: 8787

我的IDE(IntelliJ IDEA CE 2018.1)声称没有任何连接:

Unable to open debugger port (localhost:8787): java.io.IOException "handshake failed - connection prematurally closed"

我通过standalone.sh --debug以下方式启动Wildfly JAVA_OPTS

-server
-Xms64m
-Xmx512m
-XX:MetaspaceSize=96M
-XX:MaxMetaspaceSize=256m
-Djava.net.preferIPv4Stack=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djava.awt.headless=true
-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED
--add-modules=java.se
Run Code Online (Sandbox Code Playgroud)

Java 9/10/11有什么变化吗?使用Oracle JDK 8时,使用完全相同的设置进行远程调试可以很好地工作。

我可以使用telnet确认该端口8787确实无法访问。

阅读@ehsavoie的评论后进行更新netstat -ln在运行Wildfly的服务器上显示:

Proto Recv-Q Send-Q Local Address           Foreign Address         State   
tcp        0      0 127.0.0.1:8787          0.0.0.0:*               LISTEN 
Run Code Online (Sandbox Code Playgroud)

因此,显然在OpenJDK 11中,默认情况下,调试端口现已绑定到localhost。

java debugging remote-debugging wildfly java-11

17
推荐指数
2
解决办法
3614
查看次数

nexus-staging-maven-plugin:maven 部署失败:执行时遇到 API 不兼容

这对我在 Java 8 下构建来说效果很好。现在在 Java 17.01 下,当我执行 mvn 部署时,我得到了这个。

mvn install 工作正常。我尝试了 3.6.3 和 3.8.4 并将(我认为)我的所有插件更新到最新版本。

有任何想法吗?

[ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy) on project persism: Execution injected-nexus-deploy of goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:de
ploy failed: An API incompatibility was encountered while executing org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy: java.lang.ExceptionInInitializerError: null


[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------
[ERROR] : Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens java.util" to unnamed module @149f5761
[ERROR] -> [Help 1] …
Run Code Online (Sandbox Code Playgroud)

java maven maven-central java-17

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

如何使用 Dagger 2 将服务注入 JavaFX 控制器

JavaFX 本身有一些 DI 方法来允许在 XML 描述的 UI 和控制器之间进行绑定:

<Pane fx:controller="foo.bar.MyController">
  <children>
    <Label fx:id="myLabel" furtherAttribute="..." />
  </children>
</Pane>
Run Code Online (Sandbox Code Playgroud)

Java 端看起来像这样:

public class MyController implements Initializable {

    @FXML private Label myLabel;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        // FXML-fields have been injected at this point of time:
        myLabel.setText("Hello world!");
    }

}
Run Code Online (Sandbox Code Playgroud)

为此,我不能只创建 MyController 的实例。相反,我必须要求 JavaFX 为我做一些事情:

FXMLLoader loader = new FXMLLoader(MyApp.class.getResource("/fxml/myFxmlFile.fxml"), rb);
loader.load();
MyController ctrl = (MyController) loader.getController();
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好

但是,如果我想使用 Dagger 2 将一些非 FXML 依赖项注入到这个控制器类的构造函数中,我有一个问题,因为我无法控制实例化过程,如果我使用 JavaFX。

public class MyController implements …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection javafx dagger-2

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

为什么输出每次都不同?尝试抓住最终异常代码

class TestExceptions {

    public static void main(String[] args) throws Exception {
        try {
            System.out.println("try");
            throw new Exception();
        } catch(Exception e) {
            System.out.println("catch");
            throw new RuntimeException();
        } finally {
            System.out.println("finally");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我尝试多次在eclipse中运行代码时的输出.我相信到目前为止,无论何时执行try/catch块的代码的最后一行(可以返回或抛出新的Exception()类型的stmt),最后都会执行块,但这里的输出不同每次?任何人都可以澄清我的假设是对还是错?

try
catch
Exception in thread "main" finally
java.lang.RuntimeException
    at TestExceptions.main(TestExceptions.java:9)


Exception in thread "main" try
catch
java.lang.RuntimeException
    at TestExceptions.main(TestExceptions.java:9)
finally
Run Code Online (Sandbox Code Playgroud)

java exception

7
推荐指数
1
解决办法
162
查看次数

Files.newDirectoryStream与Files.list

我知道Files.list(路径)使用Files.newDirectoryStream(路径)内部,基本上只是包装的DirectoryStream.

  1. 但是,当我想使用第一个或后一个时,我不明白.

  2. 如果我想使用流API,这只是一种方便的方法吗?我自己可以做到这一点相当容易,看到这个问题.

  3. 如果查看实现Files.list,则包含内部DirectoryStream抛出的异常UncheckedIOException.我应该知道的任何事情吗?

java nio java-8 java-stream

7
推荐指数
1
解决办法
3001
查看次数

我需要释放固定长度的char数组吗?

据我所知,从其他SO问题的答案,我不需要释放固定长度的数组,如下所示:

unsigned char buffer[16];
Run Code Online (Sandbox Code Playgroud)

但一般来说,每当打电话时都必须释放内存malloc,的memcpy

我的问题是:我需要free在以下场景中打电话:

unsigned char buffer[16];
memcpy(buffer, source, 16);
...
free(buffer); // needed?
Run Code Online (Sandbox Code Playgroud)

更确切地说:根据变量的声明或初始化,决定是使用堆还是堆栈?

c malloc free memory-leaks memory-management

6
推荐指数
2
解决办法
8247
查看次数

了解主类如何影响JPMS

我有一个非常基本的JavaFX应用程序,如果Application类不是 Main类,它可以完美地工作:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;

public class Main {

    public static void main(String[] args) {
        Application.launch(App.class, args);
    }

}

public class App extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // works
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我将两者合并在一起时(这是大多数教程中推荐的方式,包括OpenJFX的官方文档),模块系统抛出IllegalAccessError(至少在OpenJDK 11.0.2上):

public class MainApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // throws IllegalAccessError
    }

    public static void main(String[] args) {
        launch(MainApp.class, args);
    } …
Run Code Online (Sandbox Code Playgroud)

java javafx java-platform-module-system java-11 javafx-11

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

重命名自制程序公式的安装部分中的文件

我正在写一个自制的公式,安装一个替代的clang版本.正如我想要的那样,clang我的PATH中的原始,系统提供和修改过的clang,我想将修改后的一个重命名为clang-omp.

一种尝试是在公式的安装部分中执行此操作.可悲的是没有成功.

def install
  #...
  system "./configure", "--prefix=#{prefix}"
  system "make", "install"

  # The following isn't working:
  (bin/'clang').mv 'clang-omp'
  (bin/'clang++').mv 'clang++-omp'
end
Run Code Online (Sandbox Code Playgroud)

另一个想法是将公式标记为keg-only,并在更改名称时手动创建二进制文件.

另一种方法(可能是最好的)可能是配置在其中创建的符号链接/usr/local/bin/*.但我找不到有关符号链接创建步骤的任何信息.

homebrew

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

如何使用 Bouncycastle 的 CMac

我正在尝试使用 BouncyCastle 的 CMac 实现,但显然我做错了。至少以下单元测试(基于 RFC 5297 测试向量)失败:

@Test
public void testCMacOfZeros() {
    byte[] key = {(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc, //
            (byte) 0xfb, (byte) 0xfa, (byte) 0xf9, (byte) 0xf8, //
            (byte) 0xf7, (byte) 0xf6, (byte) 0xf5, (byte) 0xf4, //
            (byte) 0xf3, (byte) 0xf2, (byte) 0xf1, (byte) 0xf0, //
            (byte) 0xf0, (byte) 0xf1, (byte) 0xf2, (byte) 0xf3, //
            (byte) 0xf4, (byte) 0xf5, (byte) 0xf6, (byte) 0xf7, //
            (byte) 0xf8, (byte) 0xf9, (byte) 0xfa, (byte) 0xfb, //
            (byte) …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle aes cmac siv-authenticated-encryption

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