小编Jon*_*han的帖子

没有IDEA注释附加到JDK 1.8(C:\ ...),将找不到一些问题

在Android Studio 3.1.2中,我突然在编辑器顶部的黄色磁带框中收到以下消息:

没有IDEA注释附加到JDK 1.8(C:\ Program Files\Android\Android Studio\jre),将找不到一些问题

我在编辑配置中也有一个警告:

找不到默认活动

我该如何解决这些问题?

java java-8 android-studio android-studio-3.1

62
推荐指数
5
解决办法
3万
查看次数

无法解析Spring属性占位符

我有我的配置:

<context:property-placeholder location="classpath:idm.properties" />

<bean id="idmPropertyHolder" class="fi.utu.resurssitilaus.idm.IdmPropertyHolder">
   <property name="url" value="${idm.url}" /> 
    <property name="user" value="${idm.user}" />
    <property name="password" value="${idm.password}" />
    <property name="proxyHost" value="${http.proxyHost}" />
    <property name="proxyPort" value="${http.proxyPort}" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我收到了错误

    SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'idmPropertyHolder' defined in ServletContext resource [/WEB-INF/idm-config.xml]: Could not resolve placeholder 'idm.url'
            at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:272)
            at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:75)
            at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:640)
            at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:615)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:405)
            at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
            at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
            at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
            at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
            at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) …
Run Code Online (Sandbox Code Playgroud)

spring

50
推荐指数
4
解决办法
22万
查看次数

anon-rss和total-vm是什么意思

最近,我的Linux机器上的tomcat进程突然被杀死.调查后,我在/ var/log/messages文件中找到以下错误消息:

kernel: [1799319.246494] Out of memory: Kill process 28536 (java) score 673 or sacrifice childSep 
kernel: [1799319.246506] Killed process 28536 (java) total-vm:1271568kB, anon-rss:426528kB, file-rss:0kB

现在,有人可以告诉我所有内容包括在内total-vm以及如何anon-rss与众不同rss

linux memory linux-kernel kill-process

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

将对象列表传递给Freemarker然后循环

我一直在熟悉FreeMarker,它是Java的模板引擎.

我到了能够通过哈希映射将对象传递给模板引擎的地步.这没关系.但是一旦我尝试将任何类型的多个对象集合传递给FreeMarker,它就会给我一个freemarker.template.TemplateException并抱怨它"预期的集合或序列.作业被评估为freemarker.template.SimpleHash".

根据我在各种资源中阅读的理解,这是可以预料的.

现在,我做了大量的腿部工作,发现很多人评论如何解决这个问题.但是,坦率地说,(a)对于许多例子,我不清楚他们的建议在我的案例中是如何适用的 - 尽管我已经知道Java基础知识很长一段时间我对一些架构很新关于Java Web应用程序和(b)我对哪种方法是最好的方法感到困惑.

在最简化的层面上,我想要做的就是基本上:

  1. 我有一个简单的Servlet.

  2. 我有一个简单的类(对于这个名为Invoice的例子),它有一些方法和属性.

  3. 我想让我的servlet(以某种方式)通过FreeMarker的处理方法呈现这些对象(或这些对象的视图)的实例的列表/数组/序列/散列图.

  4. 我想让我的.ftl模板循环遍历list/array/sequence/hashmap并显示方法结果,如下所示:

< # list invoices as invoice> 
Invoice note: ${invoice.getNote()}, Invoice Amount:${invoice.getAmount()} 
< / # list>
Run Code Online (Sandbox Code Playgroud)

现在,我不一定在寻找快速而肮脏的解决方案.我是FreeMarker的新手,但我希望以优雅和优秀的设计正确的方式做到这一点.所以我愿意完全重新思考这种方法.有人可以帮助我看看我需要做些什么才能让这样的事情发挥作用?

java servlets freemarker

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

Google Guice的隐藏功能

Google Guice提供了一些很棒的依赖注入功能.

我最近遇到了@Nullable特性,它允许你将构造函数参数标记为可选(允许为null),因为Guice默认不允许这些:

例如

public Person(String firstName, String lastName, @Nullable Phone phone) {
    this.firstName = checkNotNull(firstName, "firstName");
    this.lastName = checkNotNull(lastName, "lastName");
    this.phone = phone;
}
Run Code Online (Sandbox Code Playgroud)

https://github.com/google/guice/wiki/UseNullable

Guice的其他有用功能(特别是不那么明显的)人们使用了什么?

dependency-injection guice

27
推荐指数
3
解决办法
4073
查看次数

JavaFX:尝试通过MediaPlayer类播放mp3文件时未初始化"Toolkit"

我正在尝试使用以下内容在程序的后台进行简单的mp3播放:

Media med = new Media(getClass().getResource("intro.mp3").toExternalForm());
MediaPlayer mPlayer = new MediaPlayer(med);
mPlayer.play();
Run Code Online (Sandbox Code Playgroud)

intro.mp3文件与其他.class文件一起放在我的包的bin文件夹中.

问题是我的程序终止于:

Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
Run Code Online (Sandbox Code Playgroud)

完整终止日志是:

Device "Intel(R) HD Graphics Family" (\\.\DISPLAY1) initialization failed : 
WARNING: bad driver version detected, device disabled. Please update your driver to at least version 8.15.10.2302

Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:153)
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:148)
    at javafx.application.Platform.runLater(Platform.java:52)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:450)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:365)
    at PokerApp.<init>(PokerApp.java:33)
    at PokerApp.main(PokerApp.java:105)
Run Code Online (Sandbox Code Playgroud)

根据问题的原因,任何人都有任何想法吗?

java media-player javafx-2

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

是否有多个JdbcTemplate实例?

据我了解,无论是DataSourceJdbcTemplatesthreadsafe,那么您可以配置的一个实例JdbcTemplate,然后安全地注入该共享引用到多个DAO(或仓库).也DataSource应该是Spring单例,因为它管理连接池.

官方的Spring文档JdbcTemplate最佳实践解释了替代方案(手册的摘录用斜体,方括号之间的注释:

  • 在Spring配置文件中配置DataSource,然后将共享DataSource bean依赖注入到DAO类中; JdbcTemplate是在DataSource的setter中创建的.[使用XML配置,这导致多个JdbcTemplate实例,因为在数据源设置器中有new JdbcTemplate(dataSource)]
  • 使用组件扫描和注释支持依赖注入.在这种情况下,您使用@Repository注释该类(这使其成为组件扫描的候选者)并使用@Autowired注释DataSource setter方法.[也是这种情况导致多个JdbcTemplate实例]
  • 如果您正在使用Spring的JdbcDaoSupport类,并且您的各种JDBC支持的DAO类从它扩展,那么您的子类将从JdbcDaoSupport类继承setDataSource(..)方法.您可以选择是否继承此类.JdbcDaoSupport类仅为方便起见而提供.[因为你为每个扩展它的类都有一个JdbcDaoSupport实例,所以对于派生类的每个实例都有一个JdbcTemplate实例(参见JdbcDaoSupport的源代码)]

但是,稍后的说明会阻止刚刚提出的所有选项:

配置完成后,JdbcTemplate实例就是线程安全的.如果您的应用程序访问多个数据库(可能需要多个DataSource,以及随后多个不同配置的JdbcTemplates),您可能需要多个JdbcTemplate实例.

换句话说,刚才提出的所有选项都会导致有多个JdbcTemplate实例(每个DAO一个),并且在文档说明在使用单个数据库时不需要这样做.

我要做的是直接注入JdbcTemplate需要它的各种DAO,所以我的问题是,这样做是否可以?而且,您是否也认为Spring参考文档是自相矛盾的?还是我的误会?

java spring jdbctemplate

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

如何使用java避免Mysql数据库中的"数据被截断"?

在我的Java程序中.Hibernate Bean类定义了一个像..

TimtableVO.java

@Column(name="REPEAT_DAYS")
private WeekdayType repeatDays;//hear WeekdayType is Enum Class
Run Code Online (Sandbox Code Playgroud)

在我的服务类中,我使用这个TimetableVO.java bean类作为..

这是我的服务类:

public void createEvent(TimetableVO timetableVO) {
    WeekdayType weekday = null;
    for (String day : timetableVO.getTemp().split(",")) {
        weekday = WeekdayType.valueOf(day);
    }
    timetableVO.setRepeatDays(weekday);
    userDAO.createEvent(timetableVO);
}
Run Code Online (Sandbox Code Playgroud)

而我的DAO类我正在插入timetableVO对象..

public void createEvent(TimetableVO timetableVO) throws DataAccessException {
    entityManager.persist(timetableVO);
}
Run Code Online (Sandbox Code Playgroud)

但是Exception会来......

Exception: Caused by: java.sql.BatchUpdateException: Data truncated for column 'REPEAT_DAYS' at row 1
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2045)
    at coHibernate: insert into EC_TIMETABLE (CLASS_DURATION, COURSE_DURATION, COURSE_FEE, END_DATE, REPEAT_COUNT, REPEAT_DAYS, REPEAT_TYPE, SEARCH_KEY, START_DATE, S_ID) values (?, ?, ?, …
Run Code Online (Sandbox Code Playgroud)

java mysql spring hibernate

18
推荐指数
2
解决办法
5万
查看次数

@SpringbootTest 中缺少 /actuator/prometheus

我正在使用 springboot 2.4.0,并添加了以下依赖项以启用 prometheus 指标:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后在我的 application.properties 我有以下属性

management.endpoints.web.exposure.include=*
management.metrics.enable.all=true
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行一个简单的集成测试,以查看我的自定义指标出现在 /actuator/prometheus 端点上。代码下方

package com.example.demo;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.web.server.LocalServerPort;
import static io.restassured.RestAssured.given;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class IntegrationTest {

  @LocalServerPort
  private int port;

  private String baseUrl;

  @BeforeEach
  public void setup() {
      baseUrl = "http://localhost:" + port;
  }

  @Test
  public void metricsEndpoint() throws Exception {

    given().when().get(baseUrl + "/demo/actuator/prometheus")
            .then()
            .statusCode(200);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里得到的错误是

java.lang.AssertionError: 1 expectation failed.
Expected status …
Run Code Online (Sandbox Code Playgroud)

java metrics spring-boot-actuator spring-boot-test spring-micrometer

17
推荐指数
3
解决办法
1508
查看次数

Spring MVC:将异常处理程序绑定到特定方法

美好的一天!

我有一个@Controller.它的一些方法抛出相同的异常,但我想以不同的方式处理这些异常.

有没有办法如何绑定@ExceptionHandler到特定的方法?

java spring-mvc

15
推荐指数
2
解决办法
1706
查看次数