2016-02-11 7 views
1

Я пытаюсь создать каталог (используя файловый модуль ceylon) в файловой системе Jimfs, но у меня возникают проблемы с провайдером Jimfs, который не устанавливается при доступе к файловой системе из ceylon.Путь Jimfs к ceylon Directory

Это моя тестовая программа:

// File: test.se.gustavkarlsson.autogit.file.watcher.run 

import ceylon.file { 
    Nil, 
    parseURI 
} 

import com.google.common.jimfs { 
    Jimfs { 
     jimFs=newFileSystem 
    } 
} 

shared void run() { 
    value fs = jimFs(); 
    value jPath = fs.getPath("directory"); 
    value uri = jPath.toUri().string; 
    value path = parseURI(uri); 
    value resource = path.resource; 
    assert (is Nil resource); 
    resource.createDirectory(); 
} 

При запуске выводит следующее StackTrace:

ceylon run: Provider "jimfs" not found 
java.nio.file.ProviderNotFoundException: Provider "jimfs" not found 
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:341) 
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:276) 
    at ceylon.file.internal.createSystem_.createSystem(ConcreteSystem.ceylon:64) 
    at ceylon.file.createSystem_.createSystem(System.ceylon:43) 
    at test.se.gustavkarlsson.autogit.file.watcher.run_.run(run.ceylon:17) 
    at test.se.gustavkarlsson.autogit.file.watcher.run_.main(run.ceylon) 
    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 ceylon.modules.api.runtime.SecurityActions.invokeRunInternal(SecurityActions.java:57) 
    at ceylon.modules.api.runtime.SecurityActions.invokeRun(SecurityActions.java:48) 
    at ceylon.modules.api.runtime.AbstractRuntime.invokeRun(AbstractRuntime.java:75) 
    at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:122) 
    at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:106) 
    at ceylon.modules.Main.execute(Main.java:69) 
    at ceylon.modules.Main.main(Main.java:42) 
    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.jboss.modules.Module.run(Module.java:312) 
    at org.jboss.modules.Main.main(Main.java:460) 
    at ceylon.modules.bootstrap.CeylonRunTool.run(CeylonRunTool.java:244) 
    at com.redhat.ceylon.common.tools.CeylonTool.run(CeylonTool.java:491) 
    at com.redhat.ceylon.common.tools.CeylonTool.execute(CeylonTool.java:380) 
    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 com.redhat.ceylon.launcher.Launcher.runInJava7Checked(Launcher.java:114) 
    at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:41) 
    at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:34) 
    at com.redhat.ceylon.launcher.Launcher.main(Launcher.java:27) 

Любые идеи о том, как установить этот провайдер?

Я работаю с Ceylon 1.2.0 на Linux, с JimFs 1.0 (также протестировал 1.1-rc1) и работает с Jimfs, «предназначенным» способом (чистая java nio) отлично работает.

ответ

2

Это связано с видимостью модуля, где нам нужно добавить «читать» (используя терминологию Jigsaw) из JDK в модуль jimFs.

Я открыл https://github.com/ceylon/ceylon/issues/5995 для расследования.

+0

Интересно. Я буду наблюдать за этим! Спасибо. –