是否可以为Travis上运行的作业指定JDK的次要版本?我有一个失败的JavaFX项目,因为JDK 1.8.0_31用于执行构建,因为项目使用了一些仅在Java 1.8.0_40(特别是Alert和Spinner)中提供的类.
目前我的.travis.yml文件如下所示:
language: java
jdk:
- oraclejdk8
Run Code Online (Sandbox Code Playgroud)
这是一个失败的构建链接,以防它有用.
我试图了解这是一个功能还是一个错误...:-)
对于下面的控制器和异常映射器,对于将因 401 响应而失败的其余客户端,我希望在这两种情况下都会调用异常处理程序。但是,不会针对 WebApplicationException 调用它。为什么会这样以及您打算如何为这些情况注册异常处理程序。这是使用 Quarkus 版本 0.21.2
@Path("/failable")
public class FailableResource {
@Inject
@RestClient
private SomeHttpClient httpClient;
@GET
@Path("fails")
@Produces(MediaType.TEXT_PLAIN)
public String fails() {
try {
return httpClient.someQuery();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@GET
@Path("works")
@Produces(MediaType.TEXT_PLAIN)
public String works() {
try {
return httpClient.someQuery();
} catch (Exception e) {
e.printStackTrace();
throw new IllegalStateException("Not a WebApplicationException");
}
}
}
Run Code Online (Sandbox Code Playgroud)
和异常映射器
@Provider
public class HandleMySillyError implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable e) {
e.printStackTrace(); …
Run Code Online (Sandbox Code Playgroud) 我有一些Java代码根据一些输入过滤列表.它目前使用lambda,例如:
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter( compObject -> allowedTags.contains(compObject.getTag()))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将过滤器逻辑移动到另一种方法,使其可重复使用,并且易于单元测试.所以我想使用方法引用代替传递给filter方法的lambda.如果过滤器逻辑是相当静态的(即在编译时已知允许的标签列表),则很容易做到,但我无法弄清楚如何使用过滤器中的动态数据执行此操作.
我想要的是一些使用方法引用然后传递第二个动态参数的方法,即
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter(this::filterByAllowedTags, allowedTags)
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
那么我可以做我想做的事情,还是我可能错误地接近这种情况?
我试图理解为什么下面的代码片段正在做它正在做的事情.我原本以为,因为Sink不能比Source生成内容更快地产生需求,所以我会得到丢弃的消息以响应一些提议(溢出策略设置为Drop Buffer)以及错误和队列关闭消息在自毁之后.
片段:
package playground
import java.time.LocalDateTime
import java.util.concurrent.atomic.AtomicInteger
import akka.actor.{Actor, ActorLogging, ActorSystem, Props}
import akka.stream.QueueOfferResult.{Dropped, Enqueued, Failure, QueueClosed}
import akka.stream._
import akka.stream.scaladsl.{Sink, Source}
import scala.concurrent.duration._
case object MessageToSink
object Playground extends App {
implicit val actorSystem = ActorSystem("Playground")
implicit val execCntxt = actorSystem.dispatcher
val sinkActor = actorSystem.actorOf(Props[Actor2SinkFwder])
actorSystem.scheduler.schedule(1 millisecond, 50 milliseconds, sinkActor, MessageToSink)
println(s"Playground has started... ${LocalDateTime.now()}")
}
class Actor2SinkFwder extends Actor with ActorLogging {
implicit val materializer = ActorMaterializer()
implicit val execCtxt = context.dispatcher
val flow = Source.queue[Int](bufferSize …
Run Code Online (Sandbox Code Playgroud) akka ×1
akka-stream ×1
java ×1
java-8 ×1
java-stream ×1
javafx-8 ×1
jax-rs ×1
lambda ×1
microprofile ×1
quarkus ×1
scala ×1
travis-ci ×1