Aşağıda enum, JUNIT test durumlarında farklı yerlerde kodlanmış dizin değerlerinden sakınmamı engelliyor. Bu, bir WINDOW kutusundaki IDE içindeki bir geliştirme ortamında çalışıyor gibi görünüyor.Windows/linux kutusunda dosya ayırıcı sorunları
Bu kodu LINUX kutusuna koyduğumda, JUNIT sınıfları dizinleri bulamıyor. Files.exists (sourcePath), false değerini döndürür. Aynı kod IDE'de (windows) doğru döndü. Burada neyin yanlış gittiğine dair işaretçiler var mı? enum
public enum DIRECTORY {
OUTPUT("resources/output"), RESOURCE("resources/resource"), PROCESSED_OUTPUT(
"resources/output/resources/resource"), EXPLODED_WEBAPPS(
"temp/webapps"), WEBAPPS("webapps");
private String _name;
private DIRECTORY(String _name) {
this._name = _name;
}
public String getDirectoryName() {
return _name;
}
}
örnek kullanım kodu
private void restore_csv_files() {
Path _processed_output = Paths.get(DIRECTORY.PROCESSED_OUTPUT
.getDirectoryName());
Path resource = Paths.get(DIRECTORY.RESOURCE.getDirectoryName());
FileUtility.copy_files(_processed_output, resource);
FileUtility.delete_files(_processed_output);
FileUtility.delete_directory(_processed_output);
}
Dosya Util sınıfının pencerelerde Temelde
public static void copy_files(Path sourcePath, Path targetPath) {
if (Files.exists(sourcePath) && Files.exists(targetPath)) {
try {
Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(final Path file,
final BasicFileAttributes attrs) throws IOException {
Files.copy(file,
targetPath.resolve(sourcePath.relativize(file)));
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("Either Source or Target path does not exist");
}
}
bu şey çalışır, ancak linux kutusunda, bir olsun sysout "Ya Kaynak veya Hedef yolu mevcut değil" (yukarıdaki c'ye bakın) sysout için gazel) Dosya seperatörü için
Numune İstisna
java.nio.file.NoSuchFileException: webapps/web.war
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
at com.temp.utils.FileUtility.alter_date_time_of_file(Unknown Source)
at com.temp.webengine.WebEngineTest.test_web_app_updated_true(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
Kaynakları dosyaları olmayan kullanmak ve onlar değil dosya sisteminde, CLASSPATH'e var. Göz önünde bulun. – EJP