我有一个多模块Maven项目.为了这个例子,考虑两个模块:
dataconsumer模块consumer将模块data作为依赖项.
Module data声明了一堆核心类.有一些测试src/test使用它们.这些测试需要一些冗长的对象创建,因此我有一个类,其中包含一些实用方法来创建这些对象.此实用程序类(SampleDataHelper)位于src/test层次结构中.
我还在consumer模块中进行了一些测试,需要创建一些这些冗长的对象.我想在我的树中的测试中使用我的SampleDataHelper类(定义data src/test)consumer src/test.不幸的是,即使data是依赖关系consumer,consumer也看不到存在的类data src/test.
为了解决这个问题,我想我可能会创建另一个模块(data-test),然后移动SampleDataHelper到它下面src/main.然后我将包含data-test作为测试范围的依赖关系data.不幸的是,这引入了循环依赖:data使用data-test,但data-test也需要data.
我想出了唯一的解决办法是把SampleDataHelper下data src/main一个下test包装,并希望没有真正的应用程序代码以往任何时候都调用它.
如何SampleDataHelper在模块之间共享我的课程而不将它放在一起src/main?
如何实现此代码的等价物:
tx.begin();
Widget w = em.find(Widget.class, 1L, LockModeType.PESSIMISTIC_WRITE);
w.decrementBy(4);
em.flush();
tx.commit();
Run Code Online (Sandbox Code Playgroud)
...但是使用Spring和Spring-Data-JPA注释?
我现有代码的基础是:
@Service
@Transactional(readOnly = true)
public class WidgetServiceImpl implements WidgetService
{
/** The spring-data widget repository which extends CrudRepository<Widget, Long>. */
@Autowired
private WidgetRepository repo;
@Transactional(readOnly = false)
public void updateWidgetStock(Long id, int count)
{
Widget w = this.repo.findOne(id);
w.decrementBy(4);
this.repo.save(w);
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何指定updateWidgetStock方法中的所有内容都应该使用悲观的锁定集来完成.
有一个Spring Data JPA注释org.springframework.data.jpa.repository.Lock允许你设置一个LockModeType,但我不知道将它放在updateWidgetStock方法上是否有效.这听起来更像是一个注释WidgetRepository,因为Javadoc说:
org.springframework.data.jpa.repository
@Target(value = METHOD)
@Retention(value = RUNTIME)
@Documented
public @interface Lock …
我经常使用Atlassian SourceTree(在Mac OS X上)启动FileMerge来解决git合并冲突.突然之间,它已停止工作:当我右键单击并选择时Resolve Conflicts > Launch External Merge Tool,FileMerge启动,创建其中间文件,然后立即退出.SourceTree解释为合并过程完成.
问题是什么?如何调试/修复它?
我注意到之前的问题' SourceTree filemerge立即退出并创建了4个文件.怎么解决?'没有解决这个特定情况(例如,它说FileMerge在标题中退出,但在正文中它表示FileMerge将/ dev/null显示为其中一个面板.此外,我的合并冲突不是由于删除了文件. )
根据发行说明,特别是在 Java 17 上构建和运行 Spark ( SPARK-33772 ),Spark 现在支持在 Java 17 上运行。
但是,将 Java 17 (Temurin-17.0.3+7) 与 Maven (3.8.6) 和 maven-surefire-plugin (3.0.0-M7) 一起使用,在运行使用 Spark (3.3.0) 的单元测试时会失败和:
java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x1e7ba8d9) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x1e7ba8d9
堆栈是:
java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x1e7ba8d9) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module …Run Code Online (Sandbox Code Playgroud) 我使用jaxws-maven-pluginv2.1生成Web服务类.我还包括以下Jetty依赖项:
org.eclipse.jetty.jetty-serverorg.eclipse.jetty.jetty-sevletorg.eclipse.jetty.jetty-http-spi(有问题的版本是9.2.10.v20150310,但除了知道它的Jetty 9之外,这个问题超越了Jetty的特定次要版本号).
使用以下代码,我可以成功发布服务:
System.setProperty("com.sun.net.httpserver.HttpServerProvider",
"org.eclipse.jetty.http.spi.JettyHttpServerProvider");
final String url = "http://localhost/SlipperySoap";
final SlipperySoap service = new SlipperySoapImpl();
final Endpoint endpoint = Endpoint.publish(url, service);
Run Code Online (Sandbox Code Playgroud)
不时,但在相当规律的基础上,我收到Jetty的警告:
badMessage:java.lang.IllegalStateException:HttpChannelOverHttp @ 38f120bc关闭后数据太多{r = 1,a = IDLE,uri = - }
这些警告通常分批进行,如以下时间戳显示:
08:33:43.510 [pool-1-thread-4641] WARN : HttpParser: badMessage: ...
08:33:47.778 [pool-1-thread-4556] WARN : HttpParser: badMessage: ...
08:33:48.340 [pool-1-thread-4612] WARN : HttpParser: badMessage: ...
08:33:49.037 [pool-1-thread-4567] WARN : HttpParser: badMessage: ...
08:33:49.112 [pool-1-thread-4721] WARN : HttpParser: badMessage: ...
08:33:49.242 [pool-1-thread-4579] WARN …Run Code Online (Sandbox Code Playgroud) 我的输入文本框有这个类:
class InputTextBox extends FlowPanel {
public InputTextBox(String labelText) {
super();
Label label = new Label(labelText);
TextBox input = new TextBox();
this.add(label);
this.add(input);
this.addStyleName("myBox");
}
}
Run Code Online (Sandbox Code Playgroud)
如何将焦点设置在该文本框上,以便在调用onmoduleload时,光标出现在文本框中?添加成员函数似乎会抛出许多错误.
public void setFocus(boolean b) {
this.setFocus(b);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Spring Data(JPA)存储库来处理CRUD样板.
我这样定义我的存储库接口:
import org.springframework.data.repository.CrudRepository;
public interface FooRepository extends CrudRepository<Foo, Long>
{
public Foo findByXAndYAndZ(X x, Y y, Z z);
}
Run Code Online (Sandbox Code Playgroud)
Spring然后自动神奇地生成我所述接口的实现.我们得到的是代理,但我相信最终我们会得到一个代理org.springframework.data.jpa.repository.support.SimpleJpaRepository.
如果底层目标类是线程JdkDynamicAopProxy安全的,则 A 是线程安全的.因此问题是:SimpleJpaRepository线程安全吗?
我最近从Eclipse切换到IntelliJ IDEA 13.我使用VI键绑定.
我习惯在Eclipse中做的一个非vi事情是使用Shift+ ↑/ Shift+ ↓来阻塞几行文本.Eclipse中此文本选择的行为与我曾经使用的几乎所有其他文本输入窗口小部件的行为相同.通常我在做出选择后做两件事之一 - 删除此块或将其注释掉(⌘+ /).
我没有在IntelliJ IDEA 13中找到等效的仅键盘多行选择功能.
Shift+ ↑不会启动块选择 - 它似乎在屏幕上上下翻页.
如果我使用鼠标开始进行选择,则箭头键会扩展选择范围.但是,我无法单独使用键盘开始选择.
我知道⌘+ W 不断向外增长的智能元素选择 - 但如果你然后使用箭头键,选择将丢失,而不是扩展.
如何在Mac OS X上使用键盘启动然后将选择区域扩展到多行(可以使用VI键绑定)?