我正在尝试将项目转换为使用 Spring WebFlux,但在使一些基本业务逻辑正常工作时遇到了问题。我有一个负责检索/持久化记录的存储库层和一个负责应用程序业务规则的服务层。我想要做的(在服务中)层是检查给定用户名的用户是否已经存在。如果是这样,我想回复一个错误。如果没有,我想允许插入发生。
我在存储库层调用一个方法,该方法将通过用户名查找用户,如果找不到,它将返回一个空的 Mono。这按预期工作;但是,我尝试了 flatMap 和(defaultIfEmpty 和 swithIfEmpty)的各种组合,但无法编译/构建。
public Mono<User> insertUser(User user) {
return userRepository.findByUsername(user.username())
.flatMap(__ -> Mono.error(new DuplicateResourceException("User already exists with username [" + user.username() + "]")))
.switchIfEmpty(userRepository.insertUser(user));
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是Mono<Object> cannot be converted to Mono<User>,所以swithIfEmpty似乎没有反映适当的类型,并且转换似乎也不起作用。
在Eclipse中使用attach API时会在控制台中引发错误.
为了使用attach API,我在eclipse中安装了JRE,然后在当前JRE的外部jar选项中使用了包含tools.jar的edit选项.
但是当我尝试执行一个简单的程序时,它会抛出以下错误
java.lang.UnsatisfiedLinkError:java.library.path中没有附件com.sun.tools.attach.AttachNotSupportedException:在dynamicLoadingTest.VMAttach的com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:190)上没有安装任何提供程序.主要(VMAttach.java:17)
这是执行的简单程序.import java.io.IOException;
import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;
public class VMAttach {
public static void main(String[] args) {
try {
VirtualMachine vm = VirtualMachine.attach("6832");
} catch (AttachNotSupportedException e) {
System.out.println("This error");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
提到的进程ID 6832是在系统上运行的Java应用程序
在将安装的jre更改为jdk后,会产生以下错误
Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: jvm.dll not loaded by target process
at sun.tools.attach.WindowsVirtualMachine.<init>(WindowsVirtualMachine.java:46)
at sun.tools.attach.WindowsAttachProvider.attachVirtualMachine(WindowsAttachProvider.java:52)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:195)
at dynamicLoadingTest.VMAttach.main(VMAttach.java:17)
Run Code Online (Sandbox Code Playgroud) 我有一个Java GUI应用程序,使用反射和加载从该应用程序调用另一个Java GUI应用程序.它工作正常唯一的问题是,在关闭JFrame调用的应用程序时,主GUI应用程序框架也会关闭.如何防止主应用程序(框架)关闭?
我无法更改defaultCloseOperation调用的应用程序,但是可以对主应用程序进行更改.它与线程有什么关系吗?

这是我执行目标应用程序的应用程序代码
public class ClassExecutor{
private ClassLoaderOfExtClass classLoader;
private byte[][] ArrayOfClasses;
private String[] ArrayOfBinaryNames;
@SuppressWarnings("rawtypes")
private ArrayList<Class> loadedClasses;
private ArrayList<String> loadedClasesNames;
private Object[] parameters;
@SuppressWarnings("rawtypes")
public ClassExecutor() {
classLoader = new ClassLoaderOfExtClass();
new ArrayList<Class>();
loadedClasses = new ArrayList<Class>();
loadedClasesNames = new ArrayList<String>();
}
@SuppressWarnings("unchecked")
public void execute(File[] file, String[] binaryPaths) {
Object[] actuals = { new String[] { "" } };
Method m = null;
try {
Field classesx=ClassLoaderOfExtClass.class.getDeclaredField("classes");
classesx.setAccessible(true);
} …Run Code Online (Sandbox Code Playgroud) 在仪器上获得错误
java.lang.RuntimeException: java.lang.ClassNotFoundException: Deposit
at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
at org.objectweb.asm.ClassWriter.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
at com.jConSequence.instrumentor.methodProber.AdddataBaseDetailsInstructions$AdddataBaseDetailsMethodInstructions.visitMaxs(AdddataBaseDetailsInstructions.java:131)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.jConSequence.instrumentor.PrintLoadedClasses.print(PrintLoadedClasses.java:31)
at com.jConSequence.tooGUI.RevEnggToolGUI.jButton1ActionPerformed(RevEnggToolGUI.java:487)
at com.jConSequence.tooGUI.RevEnggToolGUI.access$0(RevEnggToolGUI.java:471)
at com.jConSequence.tooGUI.RevEnggToolGUI$1.actionPerformed(RevEnggToolGUI.java:127)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 有人可以建议一些解决方案如果我想获得线程的start方法的调用类名称
例如,如果我在main中启动一个线程,堆栈跟踪将调用类名称作为线程,调用方法名称作为索引2运行.请帮助查找调用者类的正确名称和线程的方法名称.
如何在运行时记录传递给方法的参数?是否有任何Java库可用于此或任何可以引发监视它的异常?
我有一个QML文件
QMLFile1.qml
Rectangle{
id: LogicFile
property int characters
property bool checked
}
Run Code Online (Sandbox Code Playgroud)
在第二个QML文件QMLFile2.qml中
如果我尝试像这样在第二个文件中实例化第一个文件
Rectangle{
QMLFile1{
// unable to access the
//properties here id: LogicFile
// property int characters
//property bool checked
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我无法在第二个内部访问第一个QMLFile的属性。
但是,如果我直接在第二个文件中实例化firstQML文件,即不在任何元素(如矩形,项目等)内,则所有属性都可访问,为什么会这样?
我的Java应用程序中有一个JFrame,其中包含JPanel我在运行时创建的一些绘图对象.问题是当滚动JFrame大数字时滚动速度变慢并且滚动条不能平滑移动.请注意我正在使用Graphics 2D对象并执行repaint滚动操作.
有没有办法平滑滚动动作JFrame.
这是代码的一部分
public class DiagramPanel implements MouseListener{
int click=0;
Point p1;
Point p2;
private Dimension panelDimension;
.... // variables
public void go() {
p1 = new Point();
p2 = new Point();
JFrame f = new JFrame();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setSize(1200,500);
panelx = new DiaPanel();
panelx.setOpaque(true);
panelx.setBackground(Color.white);
panelx.setAutoscrolls(true);
panelx.addMouseListener(this);
JScrollPane scrollPane = new JScrollPane();
// scrollPane.add(panelx);
ClassRectangle tempRect = null;
for (ClassRectangle rect : this.classRectangles) {
tempRect = rect;
} …Run Code Online (Sandbox Code Playgroud) 使用诸如此类方法的原因是什么? void QList::push_back ( const T & value )
在QT中,当它做同样的事情时,append()文档意味着什么样的兼容性.任何人都可以详细说明
以下是QT 官方文件中的陈述
" 此功能是为STL兼容性而提供的.它相当于追加(值) "
如何JFrame 在Java应用程序的不同事件派发线程中访问不同的执行请通过此处提出的SSCCE
在这种情况下,JVM的新实例或反射是否有帮助
最后,正如我所提到的,如果将以下代码添加到第一个类中
Frame[] f2 = JFrame.getFrames();
for(Frame fx: f2){
System.out.println(fx.getTitle());
fx.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
}
Run Code Online (Sandbox Code Playgroud)
如果在SSCCE中按顺序添加到第二个类,则只返回一个帧,返回两个帧,如果添加到第三个类,则返回所有帧.这是由于事件调度线程导致此行为背后的原因导致的问题.如何从主框架,即MyApp访问所有框架.
为什么JFrame.getFrames(); 返回awt帧说,例如,如果我想更改我的应用程序中所有JFrame的默认关闭操作,gerFrames返回awt帧,如果JFrame中的caset产生异常.
线程"main"中的异常java.lang.ClassCastException:[Ljava.awt.Frame; 无法转换为[Ljavax.swing.JFrame; at myApp.MYApp.main(MYApp.java:48)
java ×8
swing ×4
jframe ×2
qt ×2
agent ×1
attach-api ×1
c++ ×1
classloader ×1
graphics2d ×1
jscrollpane ×1
logging ×1
qml ×1
reflection ×1
spring ×1
spring-boot ×1
std ×1