diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java index e4de318ea..c2884bb3c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java @@ -23,6 +23,7 @@ import org.dromara.hutool.core.io.resource.ResourceUtil; import org.dromara.hutool.core.io.stream.BOMInputStream; import org.dromara.hutool.core.io.unit.DataSizeUtil; import org.dromara.hutool.core.lang.Assert; +import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.net.url.URLUtil; import org.dromara.hutool.core.reflect.ClassUtil; import org.dromara.hutool.core.regex.ReUtil; @@ -2558,6 +2559,7 @@ public class FileUtil extends PathUtil { */ public static File getWebRoot() { final String classPath = ClassUtil.getClassPath(); + Console.log(classPath); if (StrUtil.isNotBlank(classPath)) { return getParent(file(classPath), 2); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/io/ClassPathResourceTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/io/ClassPathResourceTest.java index af3d7d7b1..bc9d5da34 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/io/ClassPathResourceTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/io/ClassPathResourceTest.java @@ -4,6 +4,8 @@ import org.dromara.hutool.core.io.resource.ClassPathResource; import org.dromara.hutool.core.text.StrUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledForJreRange; +import org.junit.jupiter.api.condition.JRE; import java.io.IOException; import java.util.Properties; @@ -22,14 +24,26 @@ public class ClassPathResourceTest { Assertions.assertTrue(StrUtil.isNotEmpty(content)); } - @Test + @Test() + @EnabledForJreRange(max = JRE.JAVA_8) public void readStringTest2() { + // JDK9+中因为模块的加入,根路径读取可能为空 // 读取classpath根目录测试 final ClassPathResource resource = new ClassPathResource("/"); final String content = resource.readUtf8Str(); Assertions.assertTrue(StrUtil.isNotEmpty(content)); } + @Test() + @EnabledForJreRange(min = JRE.JAVA_9) + public void readStringTestForJdk9() { + // JDK9+中因为模块的加入,根路径读取可能为空 + // 读取classpath根目录测试 + final ClassPathResource resource = new ClassPathResource("/"); + final String content = resource.readUtf8Str(); + Assertions.assertTrue(StrUtil.isEmpty(content)); + } + @Test public void readTest() throws IOException { final ClassPathResource resource = new ClassPathResource("test.properties"); diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileUtilTest.java index 2a3598c67..b516556a9 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/io/file/FileUtilTest.java @@ -19,6 +19,8 @@ import org.dromara.hutool.core.util.SystemUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledForJreRange; +import org.junit.jupiter.api.condition.JRE; import java.io.File; import java.nio.file.Path; @@ -40,7 +42,7 @@ public class FileUtilTest { @Test public void fileTest2() { - Assertions.assertThrows(IllegalArgumentException.class, ()->{ + Assertions.assertThrows(IllegalArgumentException.class, () -> { // 构建目录中出现非子目录抛出异常 FileUtil.file("d:/aaa/bbb", "../ccc"); }); @@ -82,7 +84,7 @@ public class FileUtilTest { @Test @Disabled public void renameToSubTest() { - Assertions.assertThrows(IllegalArgumentException.class, ()->{ + Assertions.assertThrows(IllegalArgumentException.class, () -> { // 移动到子目录,报错 FileUtil.move(FileUtil.file("d:/test/a"), FileUtil.file("d:/test/a/c"), false); }); @@ -250,7 +252,9 @@ public class FileUtilTest { } @Test + @EnabledForJreRange(max = JRE.JAVA_8) public void listFileNamesTest() { + // JDK9+中,由于模块化问题,获取的classoath路径非项目下,而是junit下的。 List names = FileUtil.listFileNames("classpath:"); Assertions.assertTrue(names.contains("hutool.jpg")); @@ -366,11 +370,11 @@ public class FileUtilTest { @Test public void extNameTest() { - String path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\ddd\\" : "~/Desktop/hutool/ddd/"; + String path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\ddd\\" : "~/Desktop/hutool/ddd/"; String mainName = FileNameUtil.extName(path); Assertions.assertEquals("", mainName); - path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\ddd" : "~/Desktop/hutool/ddd"; + path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\ddd" : "~/Desktop/hutool/ddd"; mainName = FileNameUtil.extName(path); Assertions.assertEquals("", mainName); @@ -400,7 +404,9 @@ public class FileUtilTest { } @Test + @EnabledForJreRange(max = JRE.JAVA_8) public void getWebRootTest() { + // JDK9+环境中,由于模块问题,junit获取的classpath路径和实际不同 final File webRoot = FileUtil.getWebRoot(); Assertions.assertNotNull(webRoot); Assertions.assertEquals("hutool-core", webRoot.getName()); @@ -463,20 +469,20 @@ public class FileUtilTest { @Test @Disabled - public void appendLinesTest(){ + public void appendLinesTest() { final List list = ListUtil.of("a", "b", "c"); FileUtil.appendLines(list, FileUtil.file("d:/test/appendLines.txt"), CharsetUtil.UTF_8); } @Test - public void createTempFileTest(){ + public void createTempFileTest() { final File nullDirTempFile = FileUtil.createTempFile(); Assertions.assertTrue(nullDirTempFile.exists()); - final File suffixDirTempFile = FileUtil.createTempFile(".xlsx",true); + final File suffixDirTempFile = FileUtil.createTempFile(".xlsx", true); Assertions.assertEquals("xlsx", FileNameUtil.getSuffix(suffixDirTempFile)); - final File prefixDirTempFile = FileUtil.createTempFile("prefix",".xlsx",true); + final File prefixDirTempFile = FileUtil.createTempFile("prefix", ".xlsx", true); Console.log(prefixDirTempFile); Assertions.assertTrue(FileNameUtil.getPrefix(prefixDirTempFile).startsWith("prefix")); } @@ -490,7 +496,7 @@ public class FileUtilTest { } @Test - public void isAbsolutePathTest(){ + public void isAbsolutePathTest() { String path = "d:/test\\aaa.txt"; Assertions.assertTrue(FileUtil.isAbsolutePath(path)); @@ -506,7 +512,7 @@ public class FileUtilTest { @Test void checkSlipTest() { - Assertions.assertThrows(IllegalArgumentException.class, ()->{ + Assertions.assertThrows(IllegalArgumentException.class, () -> { FileUtil.checkSlip(FileUtil.file("test/a"), FileUtil.file("test/../a")); }); }