小编Ada*_*dam的帖子

哪个Java库提供base64编码/解码?

我想知道哪个库用于base64编码/解码?我需要这个功能足够稳定以供生产使用.

java

73
推荐指数
4
解决办法
17万
查看次数

如何在ant中创建临时目录?

我想在ant(版本1.6.5)中创建一个临时目录并将其分配给一个属性.

  • 命令"mktemp -d"对此非常理想,但我无法从ant内部找到类似的功能
  • 除了临时文件任务之外,我在文档中找不到任何官方函数,这显然只创建文件,而不是目录.
  • 我正在考虑使用exec来调用tempfile并获得结果,但这会使我的build.xml依赖于UNIX/linux,我想避免这种情况.

背景:我正在尝试加速在网络文件系统内部构建的现有构建过程.构建已将所有源复制到临时目录,但这是在同一文件系统上.我已经测试过将它更改为/ tmp/foo,它可以提高速度:3分钟对4分钟.

ant

17
推荐指数
1
解决办法
9062
查看次数

Java 9中的JFrame扩展

在左侧的Java 9u4和Windows 7的右侧的8u144下运行的代码完全相同.

不同的窗口大小

Java 9似乎使窗口更大.造成这种情况的原因是什么 - JEP 263?我该如何禁用它?

public class SimpleFrame {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.getContentPane().add(new JLabel("Horse"));
        frame.setSize(new Dimension(200, 100));
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing java-9

17
推荐指数
1
解决办法
516
查看次数

什么是日期字符串的结尾,如2014-01-01T00:00:00.588Z

我正在进行获取以从java中的数据库获取日期(日期应该始终是2014-01-01T00:00:00).我得到以下时间了:2014-01-01T00:00:00.588Z.

我的问题是,最后的" 588Z"是什么?这个数字会不同,检索是在不同的时区完成的吗?即数字588在不同时区是不同的数字.

感谢您提供的任何帮助.

java datetime date datetime-format

14
推荐指数
3
解决办法
7117
查看次数

JavaFX滚动表更新性能会随着时间的推移而降低

我有一个显示最后N个项目的TableView,顶部的新项目,从底部删除项目等...似乎正在发生的事情是CPU负载随着时间的推移而增加,以指示同一台机器上的其他X应用程序变得迟缓.

平台细节:Redhat 6.7,32位,Java 1.8u40

我尝试过的事情

  • 引入了runLater() - 原始代码从非FX线程更新了可观察列表 - 显然这是错误的
  • 优化 - 如果尚未进行更新,则仅在JavaFX应用程序线程上放置新的Runnables
  • 优化-bulk更新Observable列表而不是单独添加
  • 使用jvisual VM来识别任何内存泄漏,找不到任何东西.
  • 我试图重新创造这个
    • Windows 7(在金属上) - JDK 8u40 64位=>不会发生
    • Ubuntu 16.04 JDK 8u40 64位(在带有vmwgfx的VM内)=>不会发生
    • Ubuntu 16.04 OpenJDK + OpenJFX最新版(8u91)(金属上)=> 确实发生

JVisual VM - 新硬件上的Redhat 6u7(32位)

Redhat 6u7

JVisual VM - 旧硬件上的Ubuntu 16.04(64位)(2008 iMac)

英特尔iMac上的Ubuntu 16.04

这个问题是较大的应用程序的一部分,但我已将其作为下面的一个较小的例子.这使得其他应用程序在几分钟后变得缓慢,但仅限于Redhat 6u7平台.

public class TableUpdater extends Application {
    private int maxItems = 30;
    private AtomicBoolean pending = new AtomicBoolean();
    public class Thing {
        private String foo;
        public Thing(String foo) {
            this.foo = foo;
        } …
Run Code Online (Sandbox Code Playgroud)

java performance multithreading javafx javafx-8

13
推荐指数
1
解决办法
695
查看次数

OpenJDK与OracleJDK的字体略宽

我注意到使用OpenJDK与OracleJDK相比,字体间距的差异.我把它缩小到了字体.它们由OpenJDK渲染得更宽......上面截图的仔细目视检查显示字符宽度相同,唯一的区别是间距.我还通过对所有字符A-Za-z0-9的字体度量的编程检查来确认这一点.

OpenJDK vs OracleJDK字体

例如,12pt的字符串"Dialog - plain"是

  • OpenJDK宽125px - 我的8u131-b11版本
  • OpenJDK宽125px - 来自redhat磁盘的存储RPM - 1.8u45-b13
  • OracleJDK中的120px宽度 - 来自Oracle网站的8u131-b11版本

我已经广泛地搜索信息就这个问题和发现的各种选项,包括-Dawt.useSystemAAFontSettings,-Dswing.useSystemFontSettings,-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeelJava_Runtime_Environment_fonts.我试过改变所有这些,但结果保持不变.

进一步的调查发现sun.font.FontScaler,这使用了不同的底层fontscaler.这看起来部分可配置,sun.font.FontUtilities其中检查系统属性-Dsun.java2d.font.scaler=t2k,但设置这没有区别.

我的问题:可以FreetypeFontScaler配置为以类似或更接近T2KFontScaler的方式运行吗?

if (FontUtilities.isOpenJDK) {
      scalerClass = Class.forName("sun.font.FreetypeFontScaler");
} else {
      scalerClass = Class.forName("sun.font.T2KFontScaler");
}
Run Code Online (Sandbox Code Playgroud)

这是我一直在使用的测试程序

public class FontTester {
    public static void main(String[] args) throws Exception {
        System.out.println(String.format("java.home=%s", System.getProperty("java.home")));

        String family = Font.DIALOG;
        int style = Font.PLAIN;
        describeFont(new Font(family, style, 12));

        JFrame frame = new JFrame();
        frame.setSize(800, …
Run Code Online (Sandbox Code Playgroud)

java openjdk

13
推荐指数
1
解决办法
1722
查看次数

如何将SOAP XML解组为Java Object

在尝试将我的soap XML解组为JAXB对象时遇到以下错误.

我们得到的错误是期望元素是无.在解组SOAP XML时应该做什么具体的事情.

javax.xml.bind.JAXBContext jaxbContext = (javax.xml.bind.JAXBContext) JAXBContext.newInstance(Class.forName(requestName));
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(SoapXmlString);          
reqInfo = unmarshaller.unmarshal(reader);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 javax.xml.bind.UnmarshalException: unexpected element (uri:"http://schemas.xmlsoap.org/soap/envelope/", local:"Envelope"). Expected elements are (none)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)
    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)
    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)
    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement
Run Code Online (Sandbox Code Playgroud)

这是示例XML

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://example.com/v2">
       <soapenv:Header/>
       <soapenv:Body>
          <v2:createSession>
             <v2:client>
                <!--Optional:-->
                <v2:name>?</v2:name>
                <!--Optional:-->
                <v2:clientId>?</v2:clientId>
                <!--Optional:-->
                <v2:requestId>?</v2:requestId>
             </v2:client>
             <!--Optional:-->
             <v2:oldSessionId>?</v2:oldSessionId>
             <!--Optional:-->
             <v2:clientIp>?</v2:clientIp>
             <!--Optional:-->
             <v2:clientIpStatus>?</v2:clientIpStatus>
             <!--Optional:-->
             <v2:superBYOBFlow>?</v2:superBYOBFlow>
             <!--Optional:-->
             <v2:FlowParams>?</v2:FlowParams>
             <!--Optional:-->
             <v2:deviceInfo>?</v2:deviceInfo>
          </v2:createSession>
       </soapenv:Body>
    </soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

请帮忙.

java xml soap jaxb

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

加载FXML文件时"需要位置"异常

我正在尝试加载FXML文件并将其显示为应用程序窗口,但我得到一个例外.FXML文件由FXML场景生成器创建.

以下是该课程的代码

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setScene(FXMLLoader.load(getClass().getResource("sample.fxml")));
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

和FXML文件

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.AnchorPane?>
<TitledPane animated="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
            prefHeight="400.0" prefWidth="600.0" text="Pass4D" xmlns:fx="http://javafx.com/fxml/1"
            xmlns="http://javafx.com/javafx/8">
    <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
            <children>
                <Button layoutX="211.0" layoutY="134.0" mnemonicParsing="false" prefHeight="33.0" prefWidth="177.0"
                        text="Log in"/>
                <Button layoutX="212.0" layoutY="170.0" mnemonicParsing="false" prefHeight="33.0" prefWidth="175.0"
                        text="Exit"/>
            </children>
        </AnchorPane>
    </content>
</TitledPane>
Run Code Online (Sandbox Code Playgroud)

这是我得到的例外

Exception in Application start …
Run Code Online (Sandbox Code Playgroud)

java javafx

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

如何远程停止ffmpeg?

我在另一台机器上运行ffmpeg进行屏幕捕获.我希望能够阻止它远程录制.FFMPEG要求按下q以停止编码,因为它必须完成一些完成以干净地完成文件.我知道我可以用kill/killall杀死它但是这会导致视频损坏.

Press [q] to stop encoding
Run Code Online (Sandbox Code Playgroud)

我在谷歌专门为此找不到任何东西,但有些人建议回复到/ proc // fd/0将起作用.

我试过这个,但它并没有停止ffmpeg.然而,q显示在运行ffmpeg的终端中.

echo -n q > /proc/16837/fd/0
Run Code Online (Sandbox Code Playgroud)

那么如何将角色以这样的方式发送到另一个现有流程呢?就好像它是在本地键入的一样?还是有另一种方法可以干净地远程停止ffmpeg.

linux ffmpeg

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

计算有多少HashMap条目具有给定值

public final static HashMap<String, Integer> party = new HashMap<String, Integer>();
party.put("Jan",1);
party.put("John",1);
party.put("Brian",1);
party.put("Dave",1);
party.put("David",2);
Run Code Online (Sandbox Code Playgroud)

如何返回多少人的价值1

java key hashmap

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