我正在尝试根据某个Maven配置文件是否处于活动状态来配置具有数据库信息的Spring配置文件.我已经看到了这些问题的答案,但我无法将它们整合在一起.
我有一个像这样的Maven个人资料:
<profiles>
<profile>
<id>production</id>
<activation>
<property>
<name>environment.type</name>
<value>prod</value>
</property>
</activation>
</profile>
<profile>
<id>development</id>
<activation>
<property>
<name>environment.type</name>
<value>dev</value>
</property>
</activation>
<!-- Database properties for Spring -->
<properties>
<db.driver>oracle.jdbc.driver.OracleDriver</db.driver>
<db.type>oracle</db.type>
<db.host>192.168.0.0</db.host>
<db.port>1521</db.port>
<db.name>myDb</db.name>
<db.url>jdbc:${db.type}:thin:@${db.host}:${db.port}:${db.name}</db.url>
</properties>
Run Code Online (Sandbox Code Playgroud)
还有一个这样的settings.xml文件:
<servers>
<server>
<id>development</id>
<username>jsmith</username>
<password>secret</password>
</server>
</servers>
....
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment.type>dev</environment.type>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
在servlet-context.xml中:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
<property name="maxActive">
<value>10</value>
</property>
<property name="maxIdle"> …Run Code Online (Sandbox Code Playgroud) 我正在尝试将CSS文件应用于JavaFX WebView对象.从我所读到的,这应该可以解决问题,但显然我错过了一些东西,因为WebView显示没有任何样式.
package net.snortum.play;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebviewCssPlay extends Application {
@Override
public void start(Stage stage) {
stage.setTitle("CSS Styling Test");
stage.setWidth(300);
stage.setHeight(200);
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.loadContent("<html><body><h1>Hello!</h1>This is a <b>test</b></body></html>");
VBox root = new VBox();
root.getChildren().addAll(browser);
root.getStyleClass().add("browser");
Scene scene = new Scene(root);
stage.setScene(scene);
scene.getStylesheets().add("/net/snortum/play/web_view.css");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的CSS文件如下所示:
.browser {
-fx-background-color: #00ff80;
-fx-font-family: Arial, Helvetica, san-serif; …Run Code Online (Sandbox Code Playgroud) 我正在研究Java项目并使用Maven(m2e)构建它.当我这样做时,我mvn clean install首先得到这个错误:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)
首先是日志记录看起来很好(这是非常基本的).但是我不喜欢构建中的错误所以我遵循了URL.它基本上说类可以在几个包中的一个中找到,所以我添加slf4j-simple到我的依赖项中.我不知道使用哪个版本,所以我得到了最新版本(1.7.1).错误没有消失.
似乎我的一个依赖项(JXL)需要log4j1.2.14版本,这就是需要的东西slf4j.我不认为我可以改变这个(我可以吗?).我的想法是,可能slf4j是错误的版本,但我不知道如何找出log4j需要的版本.
首先,我是否有问题?第二,即使我不这样做,有没有办法摆脱警告?
这是输出mvn dependency:tree:
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ dpt ---
[INFO] com.nike.dpt:dpt:war:1.3-SNAPSHOT
[INFO] +- javax.servlet:jsp-api:jar:2.0:provided
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] +- javax.servlet:jstl:jar:1.2:runtime
[INFO] +- net.sourceforge.jexcelapi:jxl:jar:2.6.12:compile
[INFO] | \- log4j:log4j:jar:1.2.14:compile
[INFO] +- commons-dbcp:commons-dbcp:jar:1.4:compile
[INFO] | \- commons-pool:commons-pool:jar:1.5.4:compile
[INFO] +- org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO] | +- org.springframework:spring-asm:jar:3.1.2.RELEASE:compile …Run Code Online (Sandbox Code Playgroud) 我知道在Java中,一切都是通过价值传递的.但对于对象,它是传递的对象的引用值.这意味着有时候一个对象可以通过参数进行更改,这就是为什么人们说,永远不要修改参数.
但在下面的代码中,会发生一些不同的事情. 当你回到时,sin changeIt()不会改变main():
public class TestClass {
static String str = "Hello World";
public static void changeIt( String s ) {
s = "Good bye world";
}
public static void main( String[] args ) {
changeIt( str );
System.out.println( str );
}
}
Run Code Online (Sandbox Code Playgroud)
我猜 - 我想要确认 - 当你说它s = "something"是相同或相当于说String s = new String("something").这是为什么s不改变?它是否在本地分配了一个全新的对象,一旦退出就会被丢弃changeIt()?
我正在使用Vaadin开发一个Web应用程序并对其进行配置,以便它将在开发,登台和生产设置中运行.我的问题是我无法获取Tomcat7 Maven插件来运行我的war文件.战争档案很好 - 我用编辑检查了它.我在spring-context.xml(我称之为applicationContext.xml)中使用占位符来代替数据库信息.我使用Maven资源过滤来替换占位符和真实数据.这适用于war文件.
但是,当我尝试使用Tomcat7 Maven插件运行时,我收到以下错误(我遗漏了清理和测试消息):
[INFO]
[INFO] --- gwt-maven-plugin:2.4.0:compile (default) @ dpt ---
[INFO] auto discovered modules [com.catalystitservices.nike.dpt.widgetset.DptWidgetset]
[INFO] com.catalystitservices.nike.dpt.widgetset.DptWidgetset is up to date. GWT compilation skipped
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ dpt ---
[INFO] Packaging webapp
[INFO] Assembling webapp [dpt] in [C:\Projects\DPT\target\dpt]
[INFO] Processing war project
[INFO] Copying webapp webResources [C:\Projects\DPT\src/main/webapp/] to [C:\Projects\DPT\target\dpt]
[INFO] Copying webapp resources [C:\Projects\DPT\src\main\webapp]
[INFO] Webapp assembled in [1407 msecs]
[INFO] Building war: C:\Projects\DPT\target\dpt.war
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ dpt ---
[INFO] …Run Code Online (Sandbox Code Playgroud) 这在技术上不是一个编程问题,而是一个关于从Maven项目部署war文件时遇到的错误的问题.
我在构建war文件,运行Tomcat7并打开浏览器后得到的错误是:
HTTP Status 404 - /vaadin-test/
type Status report
message /vaadin-test/
description The requested resource (/vaadin-test/) is not available.
Run Code Online (Sandbox Code Playgroud)
我使用Vaadin作为我的网络应用平台.我有一个非常简单的项目,我正在尝试运行测试.我使用的是tomcat7-maven-plugin和maven-war-plugin我的POM文件.war插件配置看起来像这样(我认为我甚至不需要过滤):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
<warName>vaadin-test</warName>
<webResources>
<resource>
<directory>src/main/webapp/</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
web.xml看起来像这样:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>com.catalystitservices.vaadin.TestApp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/test-app</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
无论我是否尝试mvn tomcat7:run将创建的war文件运行或部署到外部Tomcat服务器(通过管理器页面),我都会遇到同样的错误.这让我觉得我没有正确构建war文件.我找不到错误日志(但也许我错过了它们).
有任何想法吗?
我想要一个在onAction块内更新的进度条.由于某些原因,在以下代码中,进度条在退出onAction块之前不会更新.我没有进步9秒,然后90%.该System.out打印就好了.
package net.snortum.play;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class ProgressBarTester extends Application {
public static void main( String[] args ) {
launch( ProgressBarTester.class, args );
}
@Override
public void start( final Stage stage ) throws Exception {
final GridPane grid = new GridPane();
grid.setAlignment( Pos.CENTER );
grid.setHgap( 10 );
grid.setVgap( 10 ); …Run Code Online (Sandbox Code Playgroud) 在Java 8 In Action,7.1.1节中,作者声明通过添加函数,流可以从并行处理中受益.parallel().它们提供了一种简单的方法parallelSum(int)来说明这一点.我很好奇它看起来有多好,所以我执行了这段代码:
package lambdasinaction.chap7;
import java.util.stream.Stream;
public class ParallelPlay {
public static void main(String[] args) {
System.out.println(parallelSum(100_000_000));
}
public static long parallelSum(long n) {
return Stream.iterate(1L, i -> i + 1)
.limit(n)
.parallel()
.reduce(0L, Long::sum);
}
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我收到了这个错误:
Exception in thread "main" java.lang.OutOfMemoryError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source)
at java.util.concurrent.ForkJoinTask.reportException(Unknown Source)
at java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
at java.util.stream.SliceOps$1.opEvaluateParallelLazy(Unknown Source)
at java.util.stream.AbstractPipeline.sourceSpliterator(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown …Run Code Online (Sandbox Code Playgroud)