相关疑难解决方法(0)

不推荐使用java.net.URLEncoder.encode(String),我应该使用什么呢?

使用时收到以下警告java.net.URLEncoder.encode:

warning: [deprecation] encode(java.lang.String)
         in java.net.URLEncoder has been deprecated

我应该用什么呢?

java url network-programming deprecated

185
推荐指数
3
解决办法
17万
查看次数

从JUnit测试用例中找不到资源文件

摘要

我的JUnit测试没有找到执行期间所需的文件.我正在使用Maven进行依赖管理和编译.

细节

测试用例所需的所有文件都位于:src/test/resources.

例如,src/test/resources/resourceFile.txt.

要访问资源,我使用以下代码:

URL url = getClass().getResource("/resourceFile.txt").getFile();
File file = new File(url);
Run Code Online (Sandbox Code Playgroud)

但后来file.exists()回归false.而我得到的错误是:

Tests in error: 
  myJUnitTestCase(tests.MyJUnitTestClass): /home/me/workspace/Project%20Name/target/test-classes/resourceFile.txt (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

注意,以下内容给出了相同的错误(注意删除的/前缀):

URL url = getClass().getClassLoader().getResource("resourceFile.txt").getFile();
File file = new File(url);
Run Code Online (Sandbox Code Playgroud)

似乎来自的文件src/test/resources没有被复制到target/test-classes.

有任何想法吗?

以下问题没有帮助

为什么我不能在使用Maven的Junit测试运行中访问src/test/resources?

在JUnit @BeforeClass中加载属性文件

如何在Junit中处理测试数据?

软件版本

Ubuntu 12.04

Apache Maven 2.2.1

Java 1.7.0

Eclipse(面向Web开发人员的Java EE IDE)Indigo Service Release 2

(截断)Maven POM

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.groupId</groupId>
    <artifactId>artifactId</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing resourcebundle maven

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

你如何在Java中浏览URL?

当我通过URL的InputStream读取xml,然后删除除url之外的所有内容时,我得到" http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu% 20Bin%20Bataye.mp3 ".

如你所见,有很多"%20".

我希望网址不被转义.

有没有办法在Java中这样做,而不使用第三方库?

java url-encoding

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

将Java file:// URL转换为File(...)路径,与平台无关,包括UNC路径

我正在开发独立于平台的应用程序.我收到一个文件URL*.在Windows上这些是:

  • file:///Z:/folder%20to%20file/file.txt

  • file://host/folder%20to%20file/file.txt (UNC路径)

我正在使用new File(URI(urlOfDocument).getPath())哪个适用于第一个,也适用于Unix,Linux,OS X,但不适用于UNC路径.

将文件转换为File(..)路径,与Java 6兼容的标准方法是什么?

......

*注意:我从OpenOffice/LibreOffice(XModel.getURL())收到这些URL.

java windows url

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

为什么Jenkins无法加载资源?

这是我的项目的布局:

src/
  test/
    resources/
        ares/
          file1.xml
          file2.xml
Run Code Online (Sandbox Code Playgroud)

这是Jenkins工作区的布局:

 my-module/
   target/
     test-classes/
       ares/
         file1.xml
         file2.xml
Run Code Online (Sandbox Code Playgroud)

在eclipse下,测试运行没有任何错误.在詹金斯,测试失败了.詹金斯无法找到资源.以下是测试执行的一些输出:

日食

MyClass.class.getResourceAsStream(/ares/file1.xml) => java.io.BufferedInputStream@4f4b2f1a
MyClass.class.getResourceAsStream(ares/file1.xml) => null

Thread.currentThread().getContextClassLoader().getResourceAsStream(/ares/file1.xml) => null
Thread.currentThread().getContextClassLoader().getResourceAsStream(ares/file1.xml) => java.io.BufferedInputStream@5d402eeb

MyClass.class.getClassLoader().getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getClassLoader().getResourceAsStream(ares/file1.xml) => java.io.BufferedInputStream@20c87621
Run Code Online (Sandbox Code Playgroud)

詹金斯

MyClass.class.getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getResourceAsStream(ares/file1.xml) => null

Thread.currentThread().getContextClassLoader().getResourceAsStream(/ares/file1.xml) => null
Thread.currentThread().getContextClassLoader().getResourceAsStream(ares/file1.xml) => null

MyClass.class.getClassLoader().getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getClassLoader().getResourceAsStream(ares/file1.xml) => null
Run Code Online (Sandbox Code Playgroud)

如你所见,詹金斯找不到我的资源.

我错过了什么?

java eclipse junit jenkins m2e

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

Java 在静态方法中读取文件,使用 ClassLoader 给出 FileNotFoundException

我想在我的 java 类中读取一个文件。我的问题与类似,但有两个不同之处。首先,我使用不同的项目布局:

/src/com/company/project
/resources

在资源文件夹中,我有一个名为“test.txt”的文件:

/资源/测试.txt

在项目文件夹中,我有一个类 test.java

/src/com/company/project/test.java

我希望 mu java 类能够以静态方法读取 test.txt 的内容。我尝试了以下方法:

private static String parseFile()
{
    try
    {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

        String fileURL = classLoader.getResource("test.txt").getFile();

        File file = new File(fileURL);


        ...
    }   
}
Run Code Online (Sandbox Code Playgroud)

以及以下路径:

File file1 = new File("test.txt");
File file2 = new File("/test.txt");
File file3 = new File("/resources/test.txt");
Run Code Online (Sandbox Code Playgroud)

但是当我想读取文件时,它们都会抛出 FileNotFoundException 。如何根据我的项目设置以及该方法需要是静态的这一事实,在上面的代码片段中正确声明我的文件的路径?

java file classloader

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