小编Nic*_*tto的帖子

如何测试不良参数的所有组合?

让我们假设一个简单的方法,它抛出一IndexOutOfBoundsException 对无效的索引(2d数组).

我如何测试,所有坏指数组合都会引发异常?

(当然,如果一个电话抛出异常,这个测试将不会继续)

@Test(expected = Exception.class)
public void validateIndices(){
    check(0,-1);
    check(-1,0);
    check(0,COLS + 1);
    check(ROWS + 1, 0);
}
Run Code Online (Sandbox Code Playgroud)

是否有一种常用的方法来测试方法的参数变化?

java junit exception

10
推荐指数
2
解决办法
2174
查看次数

Java中Process类的目的是什么?

Runtime objRuntime = Runtime.getRuntime();
String strBackupString = "mysqldump -u " + userName + " -p" + password + " " + dbName;
Process objProcess = objRuntime.exec(strBackupString);
Run Code Online (Sandbox Code Playgroud)

这用于备份数据库.但究竟发生了什么?任何人都可以让我解释一下,什么是目的RuntimeProcess班?

这个类用于表现我们是否从命令提示符输入命令?然后,我应该通过什么objRuntime.exec(),如果我想打开记事本?我们调用exec方法时是否执行命令?如果是,那么Process这里的用途是什么?我真的无法理解这两个类.请让我明白.提前致谢 :)

java runtime.exec

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

使用pdfbox编辑pdf页面

如何编写带有java和pdfbox的pdf页面,通过写入我已知的像素的特定位置?

我尝试了这个,但它覆盖了:

PDDocument document = null;
try {
    document = PDDocument.load(new File("/x/x/x/mypdf.pdf"));
    PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(0);
    PDFont font = PDType1Font.HELVETICA_BOLD;
    PDPageContentStream contentStream = new PDPageContentStream(document, page);
    page.getContents().getStream();
    contentStream.beginText();
    contentStream.setFont(font, 12);
    contentStream.moveTextPositionByAmount(100, 100);
    contentStream.drawString("Hello");
    contentStream.endText();
    contentStream.close();
    document.save("/x/x/x/mypdf.pdf");
    document.close();
} catch (IOException e) {
    e.printStackTrace();
} catch (COSVisitorException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

java edit pdfbox

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

"IllegalArgumentException:UNMAPPABLE [1]",同时使用希腊字符压缩文件

我想用Windows压缩Windows(7)上的文件ZipOutputStream.问题是文件名(以及文件文件Content)也包含希腊字符(" ??0000660040140521_a.txt",Gamma和Pi).压缩我使用的文件的代码:

ZipOutputStream zipOs = new ZipOutputStream(
    new FileOutputStream("c:\\temp\\test.zip"), Charset.forName("cp737")
);

File sourceFile = new File("C:/Path/To/File/??0000660040140521_b.txt");
String entryName = sourceFile.getName().replaceAll("\\\\", "/");
ZipEntry entry = new ZipEntry(entryName);
zipOs.putNextEntry(entry);
...
...
Run Code Online (Sandbox Code Playgroud)

但是在最后一行(putNextEntry通话)我得到了IllegalArgumentException:

java.lang.IllegalArgumentException: UNMAPPABLE[1]
at java.util.zip.ZipCoder.getBytes(ZipCoder.java:95)
at java.util.zip.ZipOutputStream.writeLOC(ZipOutputStream.java:407)
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:221)
Run Code Online (Sandbox Code Playgroud)

我假设希腊语和UTF-8之间的字符映射一定有什么问题...什么是在文件名中用希腊字符压缩文件的正确方法?

编辑

如果我使用"utf-8"作为字符集,则可以创建zip文件,但压缩文件的名称是错误的:" ðôðƒ0000660040140521_a.txt"(希腊字符丢失)

java character-encoding zipoutputstream

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

Mockito如何在thenReturn块中处理具有多个参数的重叠匹配器

我有一块测试代码试图在通用情况下在后续调用中返回两个值,但在特定情况下只返回与该情况相关的值.代码看起来像:

when(mockObject.method(anyString())).thenReturn(string1, string2);
when(mockObject.method(eq("expectedInput1"))).thenReturn(string1);
when(mockObject.method(eq("expectedInput2"))).thenReturn(string2);
Run Code Online (Sandbox Code Playgroud)

预期的行为是,当调用mockObject.method("foo")mockObject.method("bar"),string1并且string2应该分别返回时,但测试实际上是看到了两个响应string2.这是一个错误Mockito吗?或者我误解了Mockito模式匹配.

我的假设是匹配的最后一个模式是返回的,但是当经历该过程时,是否分别Mockito处理第一个thenReturn块中的每个参数?有没有办法绕过这种行为?

当我在调用时注释掉第二个时,模拟的行为与预期一致,所以我假设有一些关于重叠匹配器行为的特定内容.

编辑:这是Mockito版本1.9.5

java mockito

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

如何均匀分布 JavaFX VBox 的元素

我使用 aVBox并为其添加了三个标签。标签之间的垂直间距是用setSpacing()方法设置的。但它是一个固定值,比如20。如果我将值更改为50,空间将增加。但它是硬编码。

我想知道是否有任何可以使用的预定义方法,以便标签均匀分布(基于VBox高度)。如果我调整窗口大小,标签(我的意思是标签之间的空间)应该调整,以便它们仍然均匀分布(任何两个标签之间的空间相同)。

作为VBox被设定在的左侧BorderPane,我想“ lab0 ”在“显示行1 ”,“ lab1中的在”“显示第5行”和“实验2 ”为“显示第9行(在对准方面)”。如果TextFields添加更多,“ lab2 ”应该最后是“ Display Line X ”。

我的代码在这里...请标记。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class MyJavaFx …
Run Code Online (Sandbox Code Playgroud)

java javafx vertical-alignment vbox

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

将文本文件从.Net http客户端上传到InputStream格式的Java REST API

我有一个案例,我想从.Net http客户端上传文本文件到InputStream格式的Java REST API.当我使用Form-Data Body中的File从Postman访问Java REST时,该文件在Java REST服务中得到了很好的接收.当我尝试从.Net客户端做同样的事情时,我得到了一些例外,如下所示.

我的.Net HTTP客户端代码如下,

var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:8082/processes/view/createDocumentfromFile/851");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("procId", "100");
client.DefaultRequestHeaders.Add("DocName", "ProphetWorkflow");
var content = new MultipartFormDataContent();
content.Add(new ByteArrayContent(File.ReadAllBytes(@"C:\Users\charan.ghate\Desktop\Calculation.txt")));
HttpResponseMessage messge = client.PostAsync(client.BaseAddress, content).Result;
if (messge.IsSuccessStatusCode)
{
    string result = messge.Content.ReadAsStringAsync().Result;
    lblResponse.Text = result;
}
Run Code Online (Sandbox Code Playgroud)

我的Java REST服务代码如下,

@POST
@Path("/createDocumentfromFile/{procId}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
@Produces({ MediaType.APPLICATION_JSON })
public Response createDocumentfromFile(@PathParam("procId") Long piOID, @HeaderParam("DocName") String modulename,
        @Context HttpServletRequest request, @Context HttpServletResponse response,
        @FormDataParam("file") InputStream uploadedInputStream) {
//
//Operation on …
Run Code Online (Sandbox Code Playgroud)

.net java rest file httpclient

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

根据规范,在以毫秒为单位的日期上,evaluatePreconditions 的正确行为是什么?

在将我的 JAX-RS 应用程序从 Jersey 迁移到 Quarkus/Resteasy 时,我发现方法发生了行为变化evaluatePreconditions(Date lastModified)。事实上,在我的用例中,最后修改日期包含毫秒,不幸的是标题的日期格式If-Modified-Since并且Last-Modified不支持毫秒,正如我们在RFC 2616 中看到的那样。

Jersey 从提供的日期(正如我们在这里看到的)修剪毫秒数,而在 Resteasy 中,日期没有被修改,所以它实际上If-Modified-Since以不同的精度(分别是秒和毫秒)比较日期(来自标题的日期和提供的日期)以不匹配而告终,因此是 HTTP 状态代码200

说明问题的代码:

@Path("/evaluatePreconditions")
public class EvaluatePreconditionsResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public Response findData(@Context Request request) {
        final Data data = retrieveData();
        final Date lastModified = Timestamp.valueOf(data.getLastModified());
        final Response.ResponseBuilder responseBuilder = 
            request.evaluatePreconditions(lastModified);
        if (responseBuilder == null) {
            // Last modified date didn't match, send new content
            return Response.ok(data.toString())
                .lastModified(lastModified)
                .build();
        }
        // Sending …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey resteasy quarkus

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

NumberFormat解析不够严格

我有JFormattedTextField一个NumberFormat与Locale.US.因此小数点分隔符是点,分组分隔符是逗号.

现在,我在此文本字段中键入字符串"1,23",并将焦点移动到另一个组件.我希望字符串消失(就像我输入"a"而不是"1,23"时那样),因为在使用Locale.US时它显然不是数字的有效表示.但相反,文本字段中的文本更改为"123".

这是因为NumberFormat解析时使用的并不严格,只是忽略逗号.

问题:如何在这种情况下NumberFormat抛出一个ParseException,以便在将焦点移动到另一个组件后文本字段为空?

测试代码:

JDialog dialog = new JDialog();
JPanel panel = new JPanel(new BorderLayout());
dialog.getContentPane().add(panel);

NumberFormat nf = NumberFormat.getInstance(Locale.US);
JFormattedTextField textField = new JFormattedTextField(nf);
textField.setText("1,23");
panel.add(textField, BorderLayout.CENTER);
panel.add(new JButton("focus"), BorderLayout.EAST);

dialog.pack();
dialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

将焦点从文本字段移动到按钮,文本将更改为"123".

java swing number-formatting jformattedtextfield

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

Java FRANCE/FRENCH Locale千位分隔符看起来像空间但实际上并不是

如果我在FRANCE/FRENCH语言环境中转换一个数字,它应该使用空格作为千​​位分隔符.如果我尝试用其他字符替换空格,则找不到任何空格.

String input = NumberFormat.getNumberInstance(Locale.FRANCE).format(123123123);
System.out.println("String after conversion in locale "+input);
input = input.replace(" ", ".");
System.out.println("After replace space with dot      "+input);
Run Code Online (Sandbox Code Playgroud)

OUTPUT

String after conversion in locale 123 123 123
After replace space with dot      123 123 123
Run Code Online (Sandbox Code Playgroud)

因此,虽然分隔符看起来像空间,但它是不同的.什么是确切的字符?如何在input.replace()中指定该字符,以便我可以用点替换它?

java locale number-formatting

8
推荐指数
2
解决办法
2612
查看次数