Как решить следующее в java [duplicate]

Большинство ответов здесь ошибочны или, по крайней мере, устарели. Нет никакой причины, по которой javascript должен быть однопоточным, и действительно, это не так. Сегодня все основные браузеры поддерживают работников, прежде чем это было так, как и другие java-скрипты, такие как Rhino и Node.js, поддерживающие многопоточность.

«Javascript is single threaded» недействительный ответ. Например, запуск функции сна внутри рабочего не будет блокировать какой-либо из кода, выполняющегося в потоке ui.

В более поздних версиях, поддерживающих генераторы и производительность, можно было бы использовать аналогичную функциональность для функции sleep в одном поточном environment:

// This is based on the latest ES6 drafts.
// js 1.7+ (SpiderMonkey/Firefox 2+) syntax is slightly different

// run code you want to sleep here (ommit star if using js 1.7)
function* main(){
    for (var i = 0; i < 10; i++) {
        // to sleep for 10 milliseconds 10 times in a row
        yield 10;
    }

    yield 5;
    console.log('I just slept 5 milliseconds!');
}

// resume the given generator after ms milliseconds
function resume(ms, generator){
    setTimeout(function(){
        // ommit .value if using js 1.7
        var nextSleep = generator.next().value;
        resume(nextSleep, generator);
    }, ms);
}

// initialize generator and get first sleep for recursive function
var
    generator = main(),
    firstSleep = generator.next().value;

// initialize recursive resume function
resume(firstSleep, generator);

Эта имитация сна отличается от истинной функции сна, поскольку она не блокирует поток. Это просто сахара поверх текущей функции setTimeout javascript. Этот тип функциональности был реализован в Task.js и должен работать сегодня в Firefox.

34
задан Pokuri 26 June 2015 в 09:15
поделиться

6 ответов

52 = Java 8, 51 = Java 7 .. На com.typesafe.config.ConfigException ; поэтому у вас слишком новая библиотека.

35
ответ дан Joop Eggen 23 August 2018 в 18:59
поделиться

Устранена подобная проблема, разрешенная с помощью изменения версии

//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.0")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

С вышеизложенными изменениями ниже исключения было разрешено (примечание: система имеет java 7)

Исключение получено с более высокой версией:

[info] Set current project to helloworld (in build file:/Users/suniltonger/Projects/play/helloworld/helloworld/)
java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:559)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:559)
    at scala.Option.fold(Option.scala:157)
    at com.typesafe.sbt.web.SbtWeb$.com$typesafe$sbt$web$SbtWeb$$load(SbtWeb.scala:573)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:55)
    at sbt.Project$.setProject(Project.scala:319)
    at sbt.BuiltinCommands$.doLoadProject(Main.scala:503)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$.process(Command.scala:93)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.State$$anon$1.process(State.scala:184)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.MainLoop$.next(MainLoop.scala:96)
    at sbt.MainLoop$.run(MainLoop.scala:89)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
    at sbt.Using.apply(Using.scala:24)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
    at sbt.MainLoop$.runLogged(MainLoop.scala:22)
    at sbt.StandardMain$.runManaged(Main.scala:54)
    at sbt.xMain.run(Main.scala:29)
    at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
[error] Use 'last' for the full log.
[debug] > load-failed
1
ответ дан Floern 23 August 2018 в 18:59
поделиться

Действительно, что говорит @cib, решает мою проблему. Просто измените файл plugins.sbt в моей директории projet.

Измените строку:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

на:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

, и вы не получите никаких ошибок, сделав activator run еще раз.

0
ответ дан Matteo Guarnerio 23 August 2018 в 18:59
поделиться

ConfigException происходит потому, что из версии 1.3.0 библиотека com.typesafe.config совместима только с JDK8; см. README . Вам нужно понизить версию библиотеки. Используйте

"com.typesafe" % "config" % "1.2.1"
2
ответ дан Rahul Singhai 23 August 2018 в 18:59
поделиться

Хотя казалось, что я использовал ту же версию для java и javac:

  • java -version java version "1.8.0_51"
  • javac -version javac 1.8. 0_51

Моя проблема была (Linux Mint 17.1), что я установил oracle-java7 и oracle-java8, поэтому где-то должна быть некорректная конфигурация.

I uninstalled oracle-java7 и все сработало хорошо для меня.

1
ответ дан Ram 23 August 2018 в 18:59
поделиться

Описание:

  • Java SE 8 = 52
  • Java SE 7 = 51
  • Java SE 6.0 = 50

Java 8 имеет основную версию 52, что означает, что если мы запустим команду javac из установки Java 8, она по умолчанию будет генерировать класс с основной версией 52. Однако, если мы запустим файл класса в JRE 7, мы получим «Неподдерживаемый major.minor version 52.0».

Решение:

В% JAVA_HOME%

  • java -version была изменена java-версия " 1.8.0_45 "
  • javac -version javac 1.8.0_45
  • @echo %JAVA_HOME% C: \ Program Files \ Java \ jdk1.7.0_75

Чтобы установить путь временной

  • set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_45
  • @echo %JAVA_HOME% C: \ Program Files \ Java \ jdk1.8.0_45
14
ответ дан Ronak Agrawal 23 August 2018 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: