java.nio.file.AccessDeniedException для ~ / AppData \ Local \ Temp \ unlink-test12695598880278433589.tmp файл bt-cli api - PullRequest
0 голосов
/ 09 сентября 2018

Хотите скачать торренты через bt-cli. Я попытался запустить bt-cli как модуль bt parent и запустить bt-cli-demo как проект, но я всегда получаю java.nio.file.AccessDeniedException для временных файлов.

Я пробовал через Intellij Idea и через shell, все время одна и та же проблема.

Также попытался загрузить с ключами -f и -m (ссылка на проект и описание ключей https://github.com/atomashpolskiy/bt)

Я всегда получаю одно и то же исключение: экран исключений

Может быть, мне нужно изменить папку для временных файлов, но я не знаю, как это сделать

Код:

public static void main(String[] args) throws IOException {
    Options options;
    try {
        options = Options.parse(args);
    } catch (OptionException e) {
        Options.printHelp(System.out);
        return;
    }

    configureLogging(options.getLogLevel());
    configureSecurity();
    registerLog4jShutdownHook();

    CliClient client = new CliClient(options);
    client.start();
}

все параметры, которые я получаю из оболочки, api анализирует ее и создает конфигурацию в соответствии с параметрами дохода. Затем начинается.

Параметры для оболочки:

    static {
    parser = new OptionParser() {
        {
            acceptsAll(Arrays.asList("?", "h", "help")).isForHelp();
        }
    };
    metainfoFileOptionSpec = parser.acceptsAll(Arrays.asList("f", "file"), "Torrent metainfo file")
            .withRequiredArg().ofType(File.class);

    magnetUriOptionSpec = parser.acceptsAll(Arrays.asList("m", "magnet"), "Magnet URI")
            .withRequiredArg().ofType(String.class);

    targetDirectoryOptionSpec = parser.acceptsAll(Arrays.asList("d", "dir"), "Target download location")
            .withRequiredArg().ofType(File.class)
            .required();

    shouldSeedOptionSpec = parser.acceptsAll(Arrays.asList("s", "seed"), "Continue to seed when download is complete");

    sequentialOptionSpec = parser.acceptsAll(Arrays.asList("S", "sequential"), "Download sequentially");

    enforceEncryptionOptionSpec = parser.acceptsAll(Arrays.asList("e", "encrypted"), "Enforce encryption for all connections");

    verboseOptionSpec = parser.acceptsAll(Arrays.asList("v", "verbose"), "Enable more verbose logging");

    traceOptionSpec = parser.accepts("trace", "Enable trace logging");

    inetAddressOptionSpec = parser.acceptsAll(Arrays.asList("i", "inetaddr"), "Use specific network address (possible values include IP address literal or hostname)")
            .withRequiredArg().ofType(String.class);

    torrentPortOptionSpec = parser.acceptsAll(Arrays.asList("p", "port"), "Listen on specific port for incoming connections")
            .withRequiredArg().ofType(Integer.class);

    dhtPortOptionSpec = parser.accepts("dhtport", "Listen on specific port for DHT messages")
            .withRequiredArg().ofType(Integer.class);

    shouldDownloadAllFiles = parser.acceptsAll(Arrays.asList("a", "all"), "Download all files (file selection will be disabled)");
}

/**
 * @throws OptionException
 */
public static Options parse(String... args) {
    OptionSet opts = parser.parse(args);

    return new Options(
            opts.valueOf(metainfoFileOptionSpec),
            opts.valueOf(magnetUriOptionSpec),
            opts.valueOf(targetDirectoryOptionSpec),
            opts.has(shouldSeedOptionSpec),
            opts.has(sequentialOptionSpec),
            opts.has(enforceEncryptionOptionSpec),
            opts.has(verboseOptionSpec),
            opts.has(traceOptionSpec),
            opts.valueOf(inetAddressOptionSpec),
            opts.valueOf(torrentPortOptionSpec),
            opts.valueOf(dhtPortOptionSpec),
            opts.has(shouldDownloadAllFiles));
}

1 Ответ

0 голосов
/ 09 сентября 2018

AccessDeniedException может означать много вещей. Документация гласит: «Операция файловой системы запрещена, как правило, из-за разрешения доступа к файлу или другой проверки доступа», и я бы обратил внимание на слово «прочее».

...