小编per*_*rak的帖子

使用Java 8构建Gradle

我正在尝试使用Gradle 1.6构建Java 8项目,但我坚持这个错误:

Execution failed for task ':ejb:compileJava'
invalid target release: 1.8
Run Code Online (Sandbox Code Playgroud)

JAVA_HOME设置为"D:\ Program Files\Java\jdk1.8.0",build.gradle包含以下行:

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
Run Code Online (Sandbox Code Playgroud)

java gradle java-8

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

Spring 3.2:根据Spring Security角色过滤Jackson JSON输出

有没有什么好的方法可以根据Spring Security角色过滤JSON输出?我正在寻找像@JsonIgnore这样的东西,但是对于角色,比如@HasRole("ROLE_ADMIN").我该如何实现呢?

spring spring-security jackson

9
推荐指数
3
解决办法
4722
查看次数

带有enum参数的Spring @Query注释

是否可以在@Query注释中使用enum参数?

这是我用来查找用户角色的代码:

Role userRole = roleRepository.findByRole(Roles.USER);
if ( userRole == null ) {
    LOGGER.debug("No role found with role: {}", Roles.USER);
}
Run Code Online (Sandbox Code Playgroud)

它打印出来

No role found with role: ROLE_USER
Run Code Online (Sandbox Code Playgroud)

但如果我试图找到所有角色,这就是我得到的:

for ( Role r : roleRepository.findAll() )
    LOGGER.debug("{}", r);

Role@8a8c0a[roleId=1,role=role_admin,version=0]
Role@1efe9ee[roleId=2,role=role_staff,version=0]
Role@1e70f68[roleId=3,role=role_user,version=0]
Role@a475d1[roleId=4,role=role_guest,version=0]
Run Code Online (Sandbox Code Playgroud)

如您所见,用户角色确实存在.

RoleRepository:

public interface RoleRepository extends JpaRepository<Role, Long> {

    @Query("SELECT r FROM Role r WHERE LOWER(r.role) = LOWER(:role)")
    public Role findByRole(@Param("role") Roles role);

}
Run Code Online (Sandbox Code Playgroud)

角色:

@Entity
@Table(name = "role")
public class Role {

    public enum Roles {

        ADMIN("ROLE_ADMIN"), …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa

8
推荐指数
2
解决办法
8083
查看次数

如何使用Java将换行符添加到XML文件中?

如何在"不编辑此文件"注释后添加换行符?我试图添加带换行符的textnode,但它不起作用.

码:

import java.io.File;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Main {
    public static void main(String[] args) {
        try {
            final Document doc = DocumentBuilderFactory.newInstance().
                    newDocumentBuilder().newDocument();

            doc.appendChild(doc.createComment(" DO NOT EDIT THIS FILE "));

            final Element rootElement = doc.createElement("projects");
            doc.appendChild(rootElement);

            final Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
            transformer.transform(new DOMSource(doc), new StreamResult(new File("C:/abc.xml")));
        } catch ( Exception e ) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

<!-- DO NOT …
Run Code Online (Sandbox Code Playgroud)

java xml newline

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

以编程方式设置 java.system.class.loader

目前我正在使用 bat 文件来启动我的 jar 并设置 java.system.class.loader。是否可以以编程方式执行此操作以摆脱 bat 文件?

java classloader

5
推荐指数
1
解决办法
1580
查看次数

Spring Test DBUnit 和表模式名称

@DatabaseSetup使用Spring Test DBUnit 的注释时是否可以设置表模式名称?目前我正在这样使用它:

@DatabaseSetup("user-data.xml")
public class UserMapperTest {
}
Run Code Online (Sandbox Code Playgroud)

user-data.xml:(我也尝试将元素名称设置为 user.system_user 但没有任何运气)

<dataset>
    <system_user
        ...
        />
</dataset>
Run Code Online (Sandbox Code Playgroud)

在这里,我使用名为 user 的模式创建表:

create table "user".system_user (...);
Run Code Online (Sandbox Code Playgroud)

这是我在运行测试时遇到的异常:

org.h2.jdbc.JdbcSQLException: Table "SYSTEM_USER" not found; SQL statement:
delete from SYSTEM_USER [42102-175]
Run Code Online (Sandbox Code Playgroud)

java dbunit spring-test-dbunit

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

JFrame固定宽度

是否可以为JFrame设置固定宽度?至少以下代码不起作用:

import java.awt.Dimension;
import java.awt.EventQueue;

import javax.swing.JFrame;

public final class Main  {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(500, 500);
                f.setMinimumSize(new Dimension(500, 0));
                f.setMaximumSize(new Dimension(500, Integer.MAX_VALUE));
                f.setVisible(true);
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

最小设置有效,但最大值不是.

java swing jframe

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

Gradle/Java替换文本

是否可以使用正则表达式在css文件中转换URL,方式如下所示?我不想硬编码字体名称.

从:

url('../fonts/glyphiconshalflings-regular.eot?#iefix') format('embedded-opentype')
Run Code Online (Sandbox Code Playgroud)

至:

url("#{resource['css:../fonts/glyphiconshalflings-regular.eot']}?#iefix") format('embedded-opentype')
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的:

task fixCSSResources << {
    FileTree cssFiles = fileTree("src/main/webapp") {
        include "**/*.css"
    }
    cssFiles.each { File cssFile ->
        String content = cssFile.getText("UTF-8")
        // what to do here?
        cssFile.write(content, "UTF-8")
    }
}
Run Code Online (Sandbox Code Playgroud)

java regex gradle

3
推荐指数
1
解决办法
4662
查看次数

Gradle 不编译战争项目中的类

我使用 Eclipse 进行了以下项目设置:

project
    build.gradle
    libraries.gradle
    settings.gradle
    ear-project
        build.gradle
    ejb-project
        build.gradle
    war-project
        build.gradle
Run Code Online (Sandbox Code Playgroud)

这是来自根项目的 build.gradle:

apply from: "./libraries.gradle"

allprojects {
    repositories {
        mavenCentral()
    }
}

buildscript {
    repositories {
        mavenCentral()
    }
}

subprojects {
    apply plugin: "java"
    apply plugin: "eclipse"
    apply plugin: "findbugs"

    group = "foo.bar"
    version = "1.0.0-SNAPSHOT"
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7

    configurations {
        provided {
            description = "Non-exported compile-time dependencies"
        }
    }

    sourceSets.main {
        compileClasspath += configurations.provided
    }

    eclipse {
        classpath {
            plusConfigurations += configurations.provided
        } …
Run Code Online (Sandbox Code Playgroud)

java eclipse gradle jakarta-ee

0
推荐指数
1
解决办法
3083
查看次数