Настройки прокси для SBT от IntelliJ

Я пытаюсь использовать Scala/Spark из IntelliJ в Windows 7, но IntelliJ (и командная строка SBT) не может загрузить файлы. Я за прокси-сервером.

        [info] Updating {file:/D:/Users/user1/IdeaProjects/untitled17/project/}untitled17-build...
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar): typesafe-ivy-releases: unable to get resource for org.apache.logging.log4j#log4j-core;2.8.1: res=https://repo.typesafe.com/typesafe/ivy-releases/org.apache.logging.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar: java.io.IOException: Failed to authenticate with proxy (452ms)
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar): sbt-plugin-releases: unable to get resource for org.apache.logging.log4j#log4j-core;2.8.1: res=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.apache.logging.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar: java.io.IOException: Failed to authenticate with proxy (157ms)
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar): public: unable to get resource for org/apache/logging/log4j#log4j-core;2.8.1: res=https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1-tests.jar: java.io.IOException: Failed to authenticate with proxy (115ms)
        [warn]  Detected merged artifact: [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar):  (0ms).
        [warn] ==== typesafe-ivy-releases: tried
        [warn] ==== sbt-plugin-releases: tried
        [warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.apache.logging.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar
        [warn] ==== local: tried
        [warn]   d:\Users\user1\.ivy2\local\org.apache.logging.log4j\log4j-core\2.8.1\test-jars\log4j-core-tests.jar
        [warn] ==== public: tried
        [warn]   https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1-tests.jar
        [warn] ==== local-preloaded-ivy: tried
        [warn]   d:\Users\user1\.sbt\preloaded\org.apache.logging.log4j\log4j-core\2.8.1\test-jars\log4j-core-tests.jar
        [warn] ==== local-preloaded: tried
        [warn]   file:/d:/Users/user1/.sbt/preloaded/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1-tests.jar
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [warn]  ::              FAILED DOWNLOADS            ::
        [warn]  :: ^ see resolution messages for details  ^ ::
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [warn]  :: org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar)
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [error] sbt.librarymanagement.ResolveException: download failed: org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar)

О подобных проблемах уже сообщалось здесь.

Уже попробовал:

  • SBT версии 0.13.16, 1.0.3 и 1.1.1

  • установка свойств прокси JAVA_OPTS, SBT_OPTS, sbtconfigtxt

        -Dhttp.proxyHost=*
        -Dhttp.proxyPort=*
        -Dhttp.proxyUser=*
        -Dhttp.proxyPassword=*
        -Dhttps.proxyHost=*
        -Dhttps.proxyPort=*
        -Dhttps.proxyUser=*
        -Dhttps.proxyPassword=*
    

    безуспешно

  • проверил проблему в SBT:

        d:\Users\user1>sbt.bat
        [info] Loading project definition from D:\Users\user1\project
        [info] Updating {file:/D:/Users/user1/project/}user1-build...
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(t
        est-jar): typesafe-ivy-releases: unable to get resource for org.apache.logging.l
        og4j#log4j-core;2.8.1: res=https://repo.typesafe.com/typesafe/ivy-releases/org.a
        pache.logging.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar: java.io.IOE
        xception: Failed to authenticate with proxy (353ms)
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(t
        est-jar): sbt-plugin-releases: unable to get resource for org.apache.logging.log
        4j#log4j-core;2.8.1: res=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases
        /org.apache.logging.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar: java.
        io.IOException: Failed to authenticate with proxy (8ms)
        [warn]  [FAILED     ] org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(t
        est-jar): public: unable to get resource for org/apache/logging/log4j#log4j-core
        ;2.8.1: res=https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2
        .8.1/log4j-core-2.8.1-tests.jar: java.io.IOException: Failed to authenticate wit
        h proxy (8ms)
        [warn]  Detected merged artifact: [FAILED     ] org.apache.logging.log4j#log4j-c
        ore;2.8.1!log4j-core.jar(test-jar):  (0ms).
        [warn] ==== typesafe-ivy-releases: tried
        [warn] ==== sbt-plugin-releases: tried
        [warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.apache.logg
        ing.log4j/log4j-core/2.8.1/test-jars/log4j-core-tests.jar
        [warn] ==== local: tried
        [warn]   d:\Users\user1\.ivy2\local\org.apache.logging.log4j\log4j-core\2.8.1\
        test-jars\log4j-core-tests.jar
        [warn] ==== public: tried
        [warn]   https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.8.
        1/log4j-core-2.8.1-tests.jar
        [warn] ==== local-preloaded-ivy: tried
        [warn]   d:\Users\user1\.sbt\preloaded\org.apache.logging.log4j\log4j-core\2.8
        .1\test-jars\log4j-core-tests.jar
        [warn] ==== local-preloaded: tried
        [warn]   file:/d:/Users/user1/.sbt/preloaded/org/apache/logging/log4j/log4j-co
        re/2.8.1/log4j-core-2.8.1-tests.jar
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [warn]  ::              FAILED DOWNLOADS            ::
        [warn]  :: ^ see resolution messages for details  ^ ::
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [warn]  :: org.apache.logging.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar)
        [warn]  ::::::::::::::::::::::::::::::::::::::::::::::
        [error] sbt.librarymanagement.ResolveException: download failed: org.apache.logg
        ing.log4j#log4j-core;2.8.1!log4j-core.jar(test-jar)
        [error]         at sbt.internal.librarymanagement.IvyActions$.resolveAndRetrieve
        (IvyActions.scala:331)
        [error]         at sbt.internal.librarymanagement.IvyActions$.$anonfun$updateEit
        her$1(IvyActions.scala:205)
        [error]         at sbt.internal.librarymanagement.IvySbt$Module.$anonfun$withMod
        ule$1(Ivy.scala:229)
        [error]         at sbt.internal.librarymanagement.IvySbt.$anonfun$withIvy$1(Ivy.
        scala:190)
        [error]         at sbt.internal.librarymanagement.IvySbt.sbt$internal$libraryman
        agement$IvySbt$$action$1(Ivy.scala:70)
        [error]         at sbt.internal.librarymanagement.IvySbt$$anon$3.call(Ivy.scala:
        77)
        [error]         at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:95)
        [error]         at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withCh
        annelRetries$1(Locks.scala:80)
        [error]         at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Lock
        s.scala:99)
        [error]         at xsbt.boot.Using$.withResource(Using.scala:10)
        [error]         at xsbt.boot.Using$.apply(Using.scala:9)
        [error]         at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scal
        a:60)
        [error]         at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:50)
        [error]         at xsbt.boot.Locks$.apply0(Locks.scala:31)
        [error]         at xsbt.boot.Locks$.apply(Locks.scala:28)
        [error]         at sbt.internal.librarymanagement.IvySbt.withDefaultLogger(Ivy.s
        cala:77)
        [error]         at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:185)
        [error]         at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:182)
        [error]         at sbt.internal.librarymanagement.IvySbt$Module.withModule(Ivy.s
        cala:228)
        [error]         at sbt.internal.librarymanagement.IvyActions$.updateEither(IvyAc
        tions.scala:190)
        [error]         at sbt.librarymanagement.ivy.IvyDependencyResolution.update(IvyD
        ependencyResolution.scala:20)
        [error]         at sbt.librarymanagement.DependencyResolution.update(DependencyR
        esolution.scala:56)
        [error]         at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.s
        cala:38)
        [error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(Libr
        aryManagement.scala:91)
        [error]         at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:68)
        [error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$19(Libr
        aryManagement.scala:104)
        [error]         at scala.util.control.Exception$Catch.apply(Exception.scala:224)
    
        [error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(Libr
        aryManagement.scala:104)
        [error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adap
        ted(LibraryManagement.scala:87)
        [error]         at sbt.util.Tracked$.$anonfun$inputChanged$1(Tracked.scala:149)
        [error]         at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagemen
        t.scala:118)
        [error]         at sbt.Classpaths$.$anonfun$updateTask$5(Defaults.scala:2353)
        [error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
        [error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFuncti
        ons.scala:42)
        [error]         at sbt.std.Transform$$anon$4.work(System.scala:64)
        [error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
        [error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.sc
        ala:16)
        [error]         at sbt.Execute.work(Execute.scala:266)
        [error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
        [error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(Con
        currentRestrictions.scala:167)
        [error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:32
        )
        [error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        [error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors
        .java:511)
        [error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        [error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolE
        xecutor.java:1149)
        [error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool
        Executor.java:624)
        [error]         at java.lang.Thread.run(Thread.java:748)
        Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? [error] (*:update)
         sbt.librarymanagement.ResolveException: download failed: org.apache.logging.log
        4j#log4j-core;2.8.1!log4j-core.jar(test-jar)
    

3 ответа

Решение

Для меня настройки прокси (независимо от того, были ли они установлены в Intellij, SBT.conf или переменных среды), не работали.

Пара соображений, которые решили эту проблему (по крайней мере для меня):

- если вы используете SBT 0.13.16 (не новее, чем это)

- установить Использовать Авто Импорт

После этого сообщения "FAILED DOWNLOADS" не отображаются.

Если вы уверены, что это проблема с прокси-сервером (а не, скажем, временная проблема с сетевым подключением), то вот ваши альтернативы...

Как вы упоминаете, вы можете определить JVM_OPTS переменная окружения, задающая параметры конфигурации прокси-сервера JVM. Просто чтобы прояснить, лучше всего, если это определено глобально (через диалоговое окно " Переменные среды " в апплете системы Windows, поскольку похоже, что вы используете Windows). Если вы не уверены, как это сделать, дайте мне знать. Важно понимать, что ваши существующие процессы не будут воспринимать изменения, внесенные в глобальные переменные среды, - самое простое решение - просто закрыть и перезапустить их.

Другая альтернатива - поместить параметры JVM в .jvmopts файл в корневой папке вашего проекта SBT. (Хорошая идея поместить в этот файл параметры JVM для конкретного проекта, но не очень хорошая идея включать в такой файл параметры, относящиеся к машине или сайту, например, параметры прокси-сервера. Очевидно, что если вам нужны учетные данные для входа в систему, настройте свой прокси, не идите по этому пути!) Если вы выберете эту опцию, вам потребуется один параметр в каждой строке файла. SBT будет читать любые такие настройки при каждом запуске.

В любом случае, из вашего вопроса не ясно, правильно ли вы указали настройки прокси-сервера JVM, поскольку * не является допустимым значением для любого из них. (Если вы только что использовали * чтобы заменить ваши фактические настройки, достаточно справедливо.) Вы будете лучше знать, какими должны быть ваши настройки прокси-сервера, но - если у вас есть настройки системного прокси-сервера для вашего компьютера в Windows - часто самый простой способ настроить приложения Java для использования прокси-сервера - это использовать следующую настройку:

JAVA_OPTS=-Djava.net.useSystemProxies=true

или создать .jvmopts файл с таким содержанием:

-Djava.net.useSystemProxies=true

Если вы не настроили системный прокси-сервер, вам нужно быть более точным:

JAVA_OPTS=-Dhttp.proxyHost=my.proxyhost.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=my.proxyhost.com -Dhttps.proxyPort=443

или, в .jvmopts:

-Dhttp.proxyHost=my.proxyhost.com
-Dhttp.proxyPort=80
-Dhttps.proxyHost=my.proxyhost.com
-Dhttps.proxyPort=443

Также обратите внимание, что если ваш прокси-сервер использует SOCKS вместо HTTP, соответствующие настройки будут следующими:

JAVA_OPTS=-DsocksProxyHost=my.proxyhost.com -DsocksProxyPort=8080

или, в .jvmopts:

-DsocksProxyHost=my.proxyhost.com
-DsocksProxyPort=8080

Очевидно, вам нужно заменить эти адреса хоста и номера портов на те, что используются для вашего прокси. (Если ваш домен аутентифицирует вас на прокси-сервере, вам не нужно указывать настройки имени пользователя и пароля.)

Это должно гарантировать, что SBT работает из командной строки, а также для случаев, когда вы выполняете задачи SBT из IntelliJ (как конфигурация запуска).

Однако IntelliJ также имеет свои собственные настройки прокси, которые он использует при внутреннем запуске SBT. Вам нужно будет настроить это тоже. Вы можете получить доступ к настройкам прокси-сервера IntelliJ через пункт меню Файл / Настройки..., затем в разделе Внешний вид и поведение / Системные настройки /HTTP-прокси (или введите "прокси" в поле поиска настроек):

Дайте мне знать, как вы поживаете...

К сожалению, ни один из вышеперечисленных вариантов не работает для меня. Что еще более расстраивает, так это то, что Maven отлично работает с этим же корпоративным прокси. Я просто добавил свои учетные данные с URL, портом, именем пользователя и паролем в файл settings.xml и все.

У нас есть аутентифицированный прокси. Я получаю сообщение об ошибке: java.io.Expection: не удалось аутентифицироваться на прокси.

Другие вопросы по тегам