相关疑难解决方法(0)

Java:如何从转义的URL获取文件?

我收到一个找到本地文件的URL(我收到的URL不在我的控制范围内).URL按RFC2396中的定义进行有效转义.如何将其转换为Java File对象?

有趣的是,URL getFile()方法返回一个String,而不是File.

我已经创建了一个名为"/ tmp/some dir"的目录(在"some"和"dir"之间有一个间距字符),它通过以下URL正确定位:"file:/// tmp/some%20dir" (为清楚起见,添加了引号).

如何将该URL转换为Java文件?

要提供有关我的问题的更多详细信息,以下打印为false:

URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile() );
System.out.println( "Does dir exist? " + f.exists() );
Run Code Online (Sandbox Code Playgroud)

而以下(用空格手动替换"%20")打印为true:

URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile().replaceAll( "%20", " " ) );
System.out.println( "Does dir exist? " + f.exists() );
Run Code Online (Sandbox Code Playgroud)

请注意,我不是在问为什么第一个示例打印为false,为什么使用我的hacky replaceAll的第二个示例打印为true,我问如何将转义的URL转换为Java File对象.

编辑:谢谢大家,这几乎是一个骗局但不完全.

愚蠢的是我在URL类本身中寻找一个帮助方法.

以下按预期从Java URL获取Java文件:

URL url = new URL( "file:///home/nonet/some%20dir" ); …
Run Code Online (Sandbox Code Playgroud)

java url escaping file

45
推荐指数
3
解决办法
5万
查看次数

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

我在运行以下代码时遇到问题:

configService.setMainConfig("src/test/resources/MainConfig.xml");
Run Code Online (Sandbox Code Playgroud)

来自Junit @Before方法.

这是Maven构建其目标文件夹的方式吗?

java junit4 mockito

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

在JUnit @BeforeClass中加载属性文件

我正在尝试在我的JUnit测试执行期间从我的类路径加载sample.properties,它无法在类路径中找到该文件.如果我编写Java Main类,我可以正常加载文件.我正在使用下面的ant任务来执行我的JUnit.

public class Testing {
 @BeforeClass
    public static void setUpBeforeClass() throws Exception {   
        Properties props = new Properties();
        InputStream fileIn = props_.getClass().getResourceAsStream("/sample.properties");
        **props.load(fileIn);**
    }

}
Run Code Online (Sandbox Code Playgroud)

JUnit的:

<path id="compile.classpath">
        <pathelement location="${build.classes.dir}"/>
    </path>
    <target name="test" depends="compile">
            <junit haltonfailure="true">
                <classpath refid="compile.classpath"/>
                <formatter type="plain" usefile="false"/>
                <test name="${test.suite}"/>
            </junit>
        </target>
        <target name="compile">
            <javac srcdir="${src.dir}" 
                   includeantruntime="false"
                   destdir="${build.classes.dir}" debug="true" debuglevel="lines,vars,source">
                <classpath refid="compile.classpath"/>
            </javac>
            <copy todir="${build.classes.dir}">
                <fileset dir="${src.dir}/resources"
                         includes="**/*.sql,**/*.properties" />
            </copy>
        </target>
Run Code Online (Sandbox Code Playgroud)

输出:

[junit] Tests run: 0, Failures: 0, Errors: 1, Time elapsed: 0.104 sec
[junit] 
[junit] …
Run Code Online (Sandbox Code Playgroud)

java ant junit

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

为什么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
查看次数

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

在TDD(Test Driven Development)开发过程中,如何处理测试数据?假设一个场景,解析一个日志文件以获取所需的列.对于强大的测试,我如何准备测试数据?我是否正确地将这些文件放到测试类文件中?

java tdd junit unit-testing

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

标签 统计

java ×5

junit ×3

ant ×1

eclipse ×1

escaping ×1

file ×1

jenkins ×1

junit4 ×1

m2e ×1

mockito ×1

tdd ×1

unit-testing ×1

url ×1