小编ior*_*vic的帖子

有没有办法从.dex文件中获取所有类的列表?

我有一个.dex文件,称之为classes.dex.

有没有办法"读取"它的内容classes.dex并获得所有类的列表作为完整的类名,包括它们的包com.mypackage.mysubpackage.MyClass,为exmaple?

我在考虑com.android.dx.dex.file.DexFile,但我似乎无法找到一个检索整个类的方法.

java android class dx dex

46
推荐指数
4
解决办法
3万
查看次数

Java Files.write NoSuchFileException

我正在尝试使用Files.write()方法将一些文本写入文件.

byte[] contents = project.getCode().getBytes(StandardCharsets.UTF_8);

try {
    Files.write(project.getFilePath(), contents, StandardOpenOption.CREATE);
} catch (IOException ex) {
    ex.printStackTrace();
    return;
}
Run Code Online (Sandbox Code Playgroud)

根据API,如果文件不存在,它将被创建然后写入.

但是,我明白了:

java.nio.file.NoSuchFileException: C:\Users\Administrator\Desktop\work\Default.txt
    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
    at java.nio.file.spi.FileSystemProvider.newOutputStream(Unknown Source)
    at java.nio.file.Files.newOutputStream(Unknown Source)
    at java.nio.file.Files.write(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

java file-io file filenotfoundexception

33
推荐指数
1
解决办法
5万
查看次数

如何使用事务/原子进行多个REST请求?

我有以下情况.
我有一个REST客户端,作为其他3个REST客户端的外观.(我用Java编程,使用Spring Boot)

客户的责任之一包括对用户进行CRUD操作.
现在,暴露自己的REST API的所有其他3个系统都有某种用户管理.

当我收到创建用户的请求时,我必须通过他们的REST API在这3个系统上创建它们并在我的数据库中保留.

现在,在最好的情况下,我只需调用他们的API,将用户插入我的数据库中,一切都很棒.

但是,请考虑用户创建仅在1个外部服务上成功的情况.我是否会重试所有其他操作?我是否尝试删除用户已被取代的用户?

这样做的正确方法是什么?

java rest spring transactions rollback

9
推荐指数
1
解决办法
3499
查看次数

有没有办法使用Scala将两个或多个.dex文件合并到一个.dex文件中?

我正在对Jan Berkel的SBT Android插件进行一些攻击,如果有一种方法可以将多个.dex文件合并到一个.dex包含所有文件的文件中,我就会徘徊.

例如,如果我有这个:

classes1.dex
classes2.dex
classes3.dex
Run Code Online (Sandbox Code Playgroud)

有没有办法将Scala(在一些可接受的时间内)合并到一个classes.dex包含所有3 个文件的单个文件中,并具有以下结构:

classes.dex
|-- classes1/...
|-- classes2/...
\-- classes3/...
Run Code Online (Sandbox Code Playgroud)

merge android scala dex sbt-android-plugin

7
推荐指数
1
解决办法
3597
查看次数

Spring中自定义@ControllerAdvice用于异常处理

我试图将异常从我的休息控制器映射到具有主体的响应,并在中心位置执行此操作。

我已经尝试过这个:

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestErrorResponseExceptionHandler extends ResponseEntityExceptionHandler {
    @Override
    protected ResponseEntity<Object> handleExceptionInternal(
        Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
        super.handleExceptionInternal(ex, body, headers, status, request);

        return ResponseEntity.status(status).body(Error.from(status));
    }
} 
Run Code Online (Sandbox Code Playgroud)

问题是处理程序永远不会被触发。

@ExceptionHandler如果我在其余控制器中定义一个自定义方法,或者扩展具有 的东西@ExceptionHandler,那么一切都会很好,但这会引入一些糟糕的设计。

据我了解,Spring 将首先尝试在控制器中查找异常处理方法,然后检查已注册的处理程序。

我试图通过 WebMvcTest 验证行为,并且我得到的响应不是我期望的 Error 对象。

我有什么遗漏的吗?

java rest spring exception spring-restcontroller

6
推荐指数
1
解决办法
1万
查看次数

Lagom服务消耗来自Kafka的输入

我试图弄清楚如何使用Lagom来消费来自通过Kafka进行通信的外部系统的数据.

我已经遇到了Lagom文档的这一部分,它描述了Lagom服务如何通过订阅其主题与另一个Lagom服务进行通信.

helloService
  .greetingsTopic()
  .subscribe // <-- you get back a Subscriber instance
  .atLeastOnce(
  Flow.fromFunction(doSomethingWithTheMessage)
)
Run Code Online (Sandbox Code Playgroud)

但是,当您想要订阅包含某个随机外部系统生成的事件的Kafka主题时,适当的配置是什么?

这个功能需要某种适配器吗?为了澄清,我现在有这个:

object Aggregator {
  val TOPIC_NAME = "my-aggregation"
}

trait Aggregator extends Service {
  def aggregate(correlationId: String): ServiceCall[Data, Done]

  def aggregationTopic(): Topic[DataRecorded]

  override final def descriptor: Descriptor = {
    import Service._

    named("aggregator")
      .withCalls(
        pathCall("/api/aggregate/:correlationId", aggregate _)
      )
      .withTopics(
        topic(Aggregator.TOPIC_NAME, aggregationTopic())
          .addProperty(
            KafkaProperties.partitionKeyStrategy,
            PartitionKeyStrategy[DataRecorded](_.sessionData.correlationId)
          )
      )
      .withAutoAcl(true)
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过简单的POST请求调用它.但是,我希望通过使用Data来自某些(外部)Kafka主题的消息来调用它.

我想知道是否有这种方式以类似于这个模型的方式配置描述符:

override final def descriptor: Descriptor = { …
Run Code Online (Sandbox Code Playgroud)

java scala apache-kafka akka-stream lagom

6
推荐指数
1
解决办法
329
查看次数

使用Scala合并dex文件时运行Android APK文件的问题

我一直在尝试使用Scala 2.9.1和SBT 0.13以及Android-Plugin创建Android应用程序.
但是,运行ProGuard可能会非常慢.
所以,相反,当我从上次构建以来我没有使用任何新的类/方法时,我只是尝试将classes.dex与我自己的dexed android-app类合并(比如MainActivity.scala等).

我得到的问题(在Android 4.0.x上)是合并没有任何错误,但是当我尝试运行应用程序时,我得到了这个"Unfortunately, MyAndroidApp has stopped".

这是logcat日志:

  EmbeddedLogger  E  App crashed! Package: com.my.app v0 (0.1)
  300         EmbeddedLogger  E  Application Label: MyAndroidApp
 24137        AndroidRuntime  E  FATAL EXCEPTION: main
 24137        AndroidRuntime  E  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app/com.my.app.MainActivity}: java.lang.ClassNotFoundException: com.my.app.MainActivity
 24137        AndroidRuntime  E   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2118)
 24137        AndroidRuntime  E   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
 24137        AndroidRuntime  E   at android.app.ActivityThread.access$600(ActivityThread.java:139)
 24137        AndroidRuntime  E   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
 24137        AndroidRuntime  E   at android.os.Handler.dispatchMessage(Handler.java:99)
 24137        AndroidRuntime  E   at android.os.Looper.loop(Looper.java:156)
 24137        AndroidRuntime  E …
Run Code Online (Sandbox Code Playgroud)

merge android scala apk dex

5
推荐指数
1
解决办法
1056
查看次数

获取InputStream forom Apache的POI工作簿

有没有办法获得InputStreamApache的POI工作簿?

我需要它来管道到另一个OutputStream,但我无法找到这样的方法(如果它存在).

如果没有,任何关于获得它的替代方法的提示?

java excel inputstream apache-poi

4
推荐指数
2
解决办法
1万
查看次数

如何在不使用while循环的情况下运行服务器?

我正在尝试使用DatagramSocket和DatagramPacket类创建一个服务器程序,但是我当前的代码使用了一个丑陋的while循环,它在服务器运行时也冻结了我的程序,但服务器运行良好而没有任何问题.无论如何,代码如下.无论如何我可以使用不同于while循环的东西或阻止while循环阻止程序中的任何其他代码执行?

protected void run() {
    try {
        socket = new DatagramSocket(port);
        socket.setBroadcast(true);
    } catch (Exception e) {
        e.printStackTrace();
        stopServer(); //stop the server
        return; 
    }
    while(isRunning()){ //hate this loop
        try {
            byte[] buf = new byte[256];
            DatagramPacket packet = new DatagramPacket(buf, 256);
            socket.receive(packet);
            DatagramPacket serverPacket;
            byte[] serverBuf;
            byte hb = 0;
            byte lb = packet.getData()[0];
            int e = ((int)hb<<8)|((int)lb&0xFF); //translate byte to int
            switch(e) {
                case 2:
                    //do something
                    break;
                case 5:
                   //do something
                   break;
                case 7:
                    //do something
                    break;
                default: …
Run Code Online (Sandbox Code Playgroud)

java multithreading datagram

3
推荐指数
1
解决办法
1113
查看次数

如何更改Scala版本的构建定义?

我正在开发一个简单的SBT项目,其中包括用于对Scala Parallel集合进行基准测试的InputTasks.

我已经定义了InputKeys并在遇到问题时开始编写任务.

由于我的基准测试需要Scala 2.10.0-M5,我尝试在我的基础上执行此操作build.sbt:

name := "scala-parallel-collection-benchmark"

version := "1.0.0"

organization := "com.google.summer"

scalaVersion := "2.10.0-M5"
Run Code Online (Sandbox Code Playgroud)

但是,在编译时我收到以下错误:

[info] Loading project definition from C:\Users\Administrator\scala-parallel-collection-benchmark\project
[info] Compiling 1 Scala source to C:\Users\Administrator\scala-parallel-collection-benchmark\project\target\scala-2.9.1\sbt-0.11.3\classes...
[error] C:\Users\Administrator\scala-parallel-collection-benchmark\project\Build.scala:47: value tasksupport is not a member of scala.collection.parallel.mutable.ParArray[Int]
[error]                 collection.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(par))
[error]                            ^
[error] one error found
[error] {file:/C:/Users/Administrator/scala-parallel-collection-benchmark/project/}default-e0b2a2/compile:compile: Compilation failed
Run Code Online (Sandbox Code Playgroud)

它似乎仍然使用Scala 2.9.1来编译它.

如何设置SBT以便使用Scala 2.10.0-M5编译我的代码?

scala sbt

3
推荐指数
1
解决办法
2874
查看次数