有人可以告诉我在 Mac 上安装 Java 的步骤吗?
我做到了brew install java
我明白了
Warning: openjdk 17.0.1 is already installed and up-to-date.
To reinstall 17.0.1, run:
brew reinstall openjdk
Run Code Online (Sandbox Code Playgroud)
如果我执行 java -version,我会得到这个。
openjdk version "13.0.8" 2021-07-20
Run Code Online (Sandbox Code Playgroud)
如果我导航到/Library/Java
,我有 2 个空目录。
java 17安装在哪里?
我正在使用以下代码来启动进程构建器.我想知道如何将其输出重定向到String.
ProcessBuilder pb = new ProcessBuilder(System.getProperty("user.dir")+"/src/generate_list.sh", filename);
Process p = pb.start();
Run Code Online (Sandbox Code Playgroud)
我试过使用,ByteArrayOutputStream
但它似乎没有用.
Tomcat 8.5
,这将是默认的Spring Boot 1.4
,(将在明天发布)支持http2
.
如何http2
在Spring Boot
应用程序中启用?
我正在使用Spring Cache抽象,我定义了多个缓存.有时,当数据发生变化时,我想要驱逐多个缓存.有没有使用Spring的@CacheEvict
注释驱逐多个缓存?
这是我的情况,我有两个基本的POJO,我已经给出了一个简单的hibernate映射:
Person
- PersonId
- Name
- Books
Book
- Code
- Description
Run Code Online (Sandbox Code Playgroud)
我的SQL查询返回如下所示的行:
PERSONID NAME CODE DESCRIPTION
-------- ---------- ---- -----------
1 BEN 1234 BOOK 1
1 BEN 5678 BOOK 2
2 JOHN 9012 BOOK 3
Run Code Online (Sandbox Code Playgroud)
我的hibernate查询如下所示:
session.createSQLQuery("select personid, name, code, description from person_books")
.addEntity("person", Person.class)
.addJoin("book", "person.books")
.list();
Run Code Online (Sandbox Code Playgroud)
这是每节:18.1.3的hibernate文档:http: //docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querysql.html#d0e17464
我期望在我的列表中得到的是2个人物对象,其中包含书籍集合中的书籍对象:
List
|- Ben
| |- Book 1
| '- Book 2
'- John
'- Book 3
Run Code Online (Sandbox Code Playgroud)
我实际看到的是:
List
|- Object[]
| |- Ben
| | …
Run Code Online (Sandbox Code Playgroud) 我需要类似的东西
select * from tableName where date_column > now()
Run Code Online (Sandbox Code Playgroud)
但是,now()
在H2中不起作用.请指教.
我已经将基于Spring 4.0的项目从xml转换为javaconfig.
在初始化时,我的一个bean需要访问Hibernate以通过Spring @Service(buildingService
)从DB获取一些配置数据.bean初始化如下所示:
@Bean
@DependsOn({ "transactionManager", "webSocketHandler", "buildingService" })
Smarty smarty() {
Smarty bean = new Smarty();
bean.init(); // I also tried @Bean(initMethod = "init") with no difference
return bean;
}
Run Code Online (Sandbox Code Playgroud)
问题在于,在bean.init()
访问服务时,服务失败了NullPointerException
.
我补充说buildingService
,@DependsOn
但没有帮助.
可能在@Service
注释后的类被处理了@Bean
!?
我可以自己初始化@Service
-annotated类吗?
编辑1
感谢所有反馈!
我需要添加一些细节:
buildingService不是@Bean
,它是,嗯,a @Service
,看起来像这样:
@Service("buildingService")
@Transactional
public class BuildingService {
...
public List<Building> getAll() {
final Session session = sessionFactory.getCurrentSession();
final Query query = …
Run Code Online (Sandbox Code Playgroud) 在我的Spring Boot
基于1.4的应用程序中,我用来Spring Session
将会话数据存储在数据库中JDBC
.
这适用于默认会话.但是当我想添加一个新会话(通过添加?_s=1
到应用程序URL)时,我得到以下异常:
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
Run Code Online (Sandbox Code Playgroud)
这是什么问题?
编辑:请注意,我自己没有设置cookie值,Spring Session
这样做.因此我无法分辨它试图设置的值.
完整的堆栈跟踪在这里:
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:160) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:109) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.Response.generateCookieString(Response.java:989) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.Response.addCookie(Response.java:937) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.springframework.session.web.http.DefaultCookieSerializer.writeCookieValue(DefaultCookieSerializer.java:112) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.CookieHttpSessionStrategy.onNewSession(CookieHttpSessionStrategy.java:213) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.commitSession(SessionRepositoryFilter.java:247) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.access$100(SessionRepositoryFilter.java:214) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryResponseWrapper.onResponseCommitted(SessionRepositoryFilter.java:202) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.OnCommittedResponseWrapper.doOnResponseCommitted(OnCommittedResponseWrapper.java:226) ~[spring-session-1.2.1.RELEASE.jar:na]
at org.springframework.session.web.http.OnCommittedResponseWrapper.sendRedirect(OnCommittedResponseWrapper.java:126) ~[spring-session-1.2.1.RELEASE.jar:na]
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at …
Run Code Online (Sandbox Code Playgroud) 我想将一个spring-boot应用程序打包为jar,我这样做mvn package
.
这样就产生了不包含任何一个罐子/WEB-INF/jsp
,也没有/src/main/webapp/resources
.
我怎样才能确保我的jar包含所需的一切?
我的当前pom.xml
:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-samples</artifactId>
<version>1.0.0.RC3</version>
</parent>
<packaging>jar</packaging>
<properties>
<main.basedir>${basedir}/../..</main.basedir>
<m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1101-jdbc41</version>
</dependency>
</dependencies>
<!-- Package as an executable JAR -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId> …
Run Code Online (Sandbox Code Playgroud) 在一个应用程序中,由于我将它从经典的Spring webapp(部署在系统Tomcat中)转换为Spring Boot(V1.2.1)应用程序,我面临的问题是基于Quartz的预定作业不再起作用.
我安排这些Quartz工作如下:
// My own Schedule object which holds data about what to schedule when
Schedule schedule = scheduleService.get(id of the schedule);
String scheduleId = schedule.getId();
JobKey jobKey = new JobKey(scheduleId);
TriggerKey triggerKey = new TriggerKey(scheduleId);
JobDataMap jobData = new JobDataMap();
jobData.put("scheduleId", scheduleId);
JobBuilder jobBuilder = JobBuilder.newJob(ScheduledActionRunner.class)
.withIdentity(jobKey)
.withDescription(schedule.getName())
.usingJobData(jobData);
JobDetail job = jobBuilder.build();
TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger()
.forJob(jobKey)
.withIdentity(triggerKey)
.withDescription(schedule.getName());
triggerBuilder = triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(schedule.toCronExpression()));
Trigger trigger = triggerBuilder.build();
org.quartz.Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.scheduleJob(job, trigger);
Run Code Online (Sandbox Code Playgroud)
ScheduledActionRunner
:
@Component
public …
Run Code Online (Sandbox Code Playgroud) java ×9
spring ×4
spring-boot ×4
hibernate ×3
h2 ×1
haproxy ×1
http2 ×1
javafx ×1
macos ×1
maven ×1
native-sql ×1
spring-cache ×1
spring-mvc ×1
sql ×1
stream ×1
tomcat ×1