我有一个.dex文件,称之为classes.dex.
有没有办法"读取"它的内容classes.dex并获得所有类的列表作为完整的类名,包括它们的包com.mypackage.mysubpackage.MyClass,为exmaple?
我在考虑com.android.dx.dex.file.DexFile,但我似乎无法找到一个检索整个类的方法.
我正在尝试使用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)
我错过了什么吗?
我有以下情况.
我有一个REST客户端,作为其他3个REST客户端的外观.(我用Java编程,使用Spring Boot)
客户的责任之一包括对用户进行CRUD操作.
现在,暴露自己的REST API的所有其他3个系统都有某种用户管理.
当我收到创建用户的请求时,我必须通过他们的REST API在这3个系统上创建它们并在我的数据库中保留.
现在,在最好的情况下,我只需调用他们的API,将用户插入我的数据库中,一切都很棒.
但是,请考虑用户创建仅在1个外部服务上成功的情况.我是否会重试所有其他操作?我是否尝试删除用户已被取代的用户?
这样做的正确方法是什么?
我正在对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) 我试图将异常从我的休息控制器映射到具有主体的响应,并在中心位置执行此操作。
我已经尝试过这个:
@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 对象。
我有什么遗漏的吗?
我试图弄清楚如何使用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) 我一直在尝试使用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) 有没有办法获得InputStreamApache的POI工作簿?
我需要它来管道到另一个OutputStream,但我无法找到这样的方法(如果它存在).
如果没有,任何关于获得它的替代方法的提示?
我正在尝试使用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) 我正在开发一个简单的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编译我的代码?
java ×7
scala ×4
android ×3
dex ×3
merge ×2
rest ×2
spring ×2
akka-stream ×1
apache-kafka ×1
apache-poi ×1
apk ×1
class ×1
datagram ×1
dx ×1
excel ×1
exception ×1
file ×1
file-io ×1
inputstream ×1
lagom ×1
rollback ×1
sbt ×1
transactions ×1