小编Vik*_* V.的帖子

使用流中的Java 8 foreach循环移动到下一个项目

我有一个Java 8流的问题,试图继续循环下一个项目.我无法设置命令continue;,只能return;工作,但在这种情况下你将退出循环.我需要继续循环下一个项目.我怎样才能做到这一点?

示例(不工作):

try(Stream<String> lines = Files.lines(path, StandardCharsets.ISO_8859_1)){
            filteredLines = lines.filter(...).foreach(line -> {
           ...
           if(...)
              continue; // this command doesn't working here
    });
}
Run Code Online (Sandbox Code Playgroud)

实施例(工作):

try(Stream<String> lines = Files.lines(path, StandardCharsets.ISO_8859_1)){
    filteredLines = lines.filter(...).collect(Collectors.toList());
}

for(String filteredLine : filteredLines){
   ...
   if(...)
      continue; // it's working!
}
Run Code Online (Sandbox Code Playgroud)

java

92
推荐指数
2
解决办法
7万
查看次数

何时使用案例类或常规类

我有一些误解,在什么情况下我应该使用案例类或常规类遵循最佳实践.我已经阅读过关于两个类的差异但是无法想象自己的实际例子,其中推荐用例或常规类.

任何人都可以向我展示一些真实的例子并解释为什么建议这样做而不是其他情况?

scala

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

使用gradle迁移到Java 11; UnsupportedOperationException异常

尝试从jdk 10切换到11并且无法确定哪个库调用此异常:

Caused by: org.gradle.api.GradleException: failed to read class file ../../SomeTestFile.class
...
...
Caused by: java.lang.UnsupportedOperationException
        at org.objectweb.asm.ClassVisitor.visitNestMemberExperimental(ClassVisitor.java:248)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:651)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:391)
        at org.gradle.api.internal.tasks.testing.detection.AbstractTestFrameworkDetector.classVisitor(AbstractTestFrameworkDetector.java:124)
Run Code Online (Sandbox Code Playgroud)

我正在使用gradle包装器(v4.10.2),其中包括build.gradle:

buildscript {
    ext {
        springBootVersion = '2.0.5.RELEASE'
        schemaDownloadVersion = '1.6'
        generateAvroVersion = '0.14.2'
    }
    repositories {
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "http://packages.confluent.io/maven/" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("gradle.plugin.com.amit.plugin.download-registry:registry-schema-download-plugin:${schemaDownloadVersion}")
        classpath("com.commercehub.gradle.plugin:gradle-avro-plugin:${generateAvroVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.amit.plugin.download-registry'
apply plugin: 'com.commercehub.gradle.plugin.avro' …
Run Code Online (Sandbox Code Playgroud)

java gradle java-11

10
推荐指数
3
解决办法
7099
查看次数

Android:回调AsyncTask到片段(非活动)

我试图在AsyncTask和Fragment之间实现回调,但无法找到正确的信息如何做到这一点.问题是所有回调实现都在activity和asynctask之间,但我需要在fragment和asynctask之间.有人可以给我一些小工作示例如何在没有活动的情况下实现它.我的动作结构:片段调用DialogFragment - >选择一些东西并将服务器请求发送到异步任务 - >异步任务处理所有内容并更新视图和一些变量.我的主要问题是我在onCreate中只调用一次prepareData(),当我在其他片段和返回之间走动时,我会看到旧数据.也就是说,仅仅更新asProct的onPost中的视图是不够的.有回调会更新整个变量会很好.

public class TermsAndConditionsFragment extends SherlockFragment implements OnClickListener, OnTouchListener, OnItemClickListener, onTaskListener {
 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    fm = getSherlockActivity().getSupportFragmentManager();


    prepareData();
}

public void prepareData() {
     termsAndConditionsM = new TermsAndConditionsManager(getSherlockActivity());
    termsAndConditions = termsAndConditionsM.getTermsAndConditions();

    if (termsAndConditions != null) {
                 int totalPayments = Integer.valueOf(termsAndConditions.get(ServerAPI.NO_OF_PAYMENTS));
        if (totalPayments > 0) {
            paymentsData = termsAndConditionsM.getpayments();

            if (paymentsData != null) {

                payments = new ArrayList<Payment>();

                for (int i = 1; i <= totalPayments; i++) {
                    paymentValues = new Payment();
                    paymentValues.setPaymentID(Integer.valueOf(paymentsData.get(ServerAPI.PAYMENT_NO …
Run Code Online (Sandbox Code Playgroud)

android callback android-asynctask

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

运行 Spring Boot 单元测试忽略 CommandLineRunner

我正在尝试编写 Spring Boot 单元测试,但在运行单元测试时运行整个应用程序的 CommandLineRunner 有一些问题。

应用程序类

@SpringBootApplication
@Profile("!test")
public class App implements CommandLineRunner {

  @Autowired
  private ReportService reportService;

  public static void main(String[] args) {
    SpringApplication app = new SpringApplication(App.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
  }

  @Override
  public void run(String... args) throws Exception {

    if (args.length == 0)
      reportService.generateReports();

    if (args.length > 0 && args[0].equals("-p"))
      for (Report report : reportService.showReports())
        System.out.println(report.getId() + " : " + report.getTimestamp());
  }
}
Run Code Online (Sandbox Code Playgroud)

报告服务测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
@ActiveProfiles("test")
public class ReportServiceTest {

  @Autowired
  private ReportRepository reportRepository; …
Run Code Online (Sandbox Code Playgroud)

unit-testing spring-boot

8
推荐指数
0
解决办法
3108
查看次数

用于gradle项目中最新JOOQ库的JOOQ插件

我在找到一个有效的JOOQ插件或者在我的java gradle项目中配​​置最新的JOOQ库时遇到了问题.

我找到了以下插件:

由于错误消息,这对我不起作用:

Could not find any version that matches org.jooq:jooq-codegen-gradle:latest.integration.
Searched in the following locations:
    http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/maven-metadata.xml
    http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/
Run Code Online (Sandbox Code Playgroud)

这仅适用于JOOQ 3.2.2(最新的3.4.2不起作用).如果我将其设置为3.4.2,则jooqGenerate成功执行但数据提取会调用错误消息:

Error:(12, 8) java: org.jooq.generated.tables.records.PersonsRecord is not abstract and does not override abstract method values(java.lang.Integer,java.lang.String,java.lang.String) in org.jooq.Record3
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

那是我的gradle.build:

apply plugin: 'java'
apply plugin: 'jooq'

sourceCompatibility = 1.5
version = '1.0'

repositories {
    jcenter()
}

dependencies {
    compile 'org.jooq:jooq:3.4.2'
    compile 'org.jooq:jooq-meta:3.4.2'
    compile 'org.jooq:jooq-codegen:3.4.2'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

buildscript {
    repositories {
        jcenter()
    }

    dependencies …
Run Code Online (Sandbox Code Playgroud)

gradle jooq

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

javax.el.E​​LException:找不到提供程序com.sun.el.E​​xpressionFactoryImpl

尽管有很多问题解决方案,我仍然坚持使用以下问题ELException:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer' defined in ServletContext resource [/WEB-INF/tiles-context.xml]: Invocation of init method failed; nested exception is javax.el.ELException: Provider com.sun.el.ExpressionFactoryImpl not found
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
        at org.springframework.beans.factory.support.AbstractBeanFactorygetObject(AbstractBeanFactory.java:304)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745) …
Run Code Online (Sandbox Code Playgroud)

java tomcat

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

从 fat jar 中删除所有不必要的库

我正在使用 Spring Boot Jpa 和 MySQL 连接器编写 java 控制台应用程序。如何轻松地从胖罐中排除所有不必要的库?

构建.gradle

buildscript {
    ext {
        springBootVersion = '1.5.9.RELEASE'
    }
    repositories {
//        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.2.0'
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'ca.cutterslade.analyze'

sourceCompatibility = 1.8
targetCompatibility = 1.8

ext {
    mysqlVersion = '6.0.6'
    hibernateVersion = '5.2.12.Final'
}

repositories {
    mavenCentral()
}

dependencies {
//    compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.12.Final'
//    compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.2.12.Final'
//    compile group: …
Run Code Online (Sandbox Code Playgroud)

java gradle spring-data-jpa spring-boot

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

如何在Spring Webflux中获取FilePart的大小

无法弄清楚如何在 REST 端点中使用 FilePart 获取文件的实际大小:

@RestController
public class SomeController {

    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Mono<Long> fileSize(Mono<FilePart> filePart) {
        
        //How to get size of FilePart?

        // I'm not plan to create a File saving content of FilePart. 
        // Maybe it's possible somehow calculate size of all bytes.

        return Mono.empty();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新 以下是我进行文件大小和图像分辨率验证的方法。

控制器:

@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Mono<Void> upload(Mono<FilePart> file) {
    return file.flatMap(filepart -> fileService.upload(filepart));
}
Run Code Online (Sandbox Code Playgroud)

服务层的验证方法:

private Mono<byte[]> validateFileSize(FilePart filePart) {
    var maxSize = 1024;
    return FilePartUtils.getByteArray(filePart)
            .filter(bytes …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-webflux

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

Android:配置Proguard

我正在尝试配置proguard并遇到一些按优先级排序的问题:

  • 我收到了重复拉链的警告,无法修复它.我在"libs"目录中使用外部库和2个库项目(一个库项目有一个外部库 - 只添加到项目一次),它们只添加到项目一次.我试图将我的外部罐子移动到另一个目录,即"lib" - 只是重命名,因为一些用户已经设法解决它,但它没有帮助我.另一种方法是尝试将custom_rules实现到基本build.xml,因为它可以帮助一些用户避免这些警告.但是它的一切对我没有帮助,我该如何解决呢?日志:

    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [jackson-annotations-2.1.4.jar:META-INF/MANIFEST.MF])
    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [android-support-v4.jar:META-INF/MANIFEST.MF])
    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [google-analytics-v2.jar:META-INF/MANIFEST.MF])
    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [jackson-core-2.1.4.jar:META-INF/MANIFEST.MF])
    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [httpclientandroidlib-1.1.2.jar:META-INF/MANIFEST.MF])
    ProGuard: Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [deviceprint-lib-1.0.0.jar:META-INF/MANIFEST.MF])
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后一件事是签名apk建设期间的一些注意事项

    ProGuard: Note: com.google.analytics.tracking.android.AdHitIdGenerator: can't find dynamically referenced class com.google.ads.AdRequest
    ProGuard: Note: the configuration …
    Run Code Online (Sandbox Code Playgroud)

android proguard

4
推荐指数
2
解决办法
8399
查看次数