Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

9
Chromedriver 78可能存在问题,Selenium找不到在Chrome中打开的PDF的Web元素
在我的Google Chrome浏览器未更新到版本78之前,我的代码无法正常工作。我还将chromedriver更新为版本78.0.3904.70。因此,我无法再使用Selenium WebDriver和Java查找id ='plugin'的WebElement: <html> <div id="content"> <embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&reanudar=&> </div> </html> 除此之外,我的测试工作正常。我以前从未遇到过类似的问题。我也尝试找到WebElement id ='content',但收到相同的错误。 WebDriverWait wait = new WebDriverWait (driver, 90); WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin"))); scrollvalid.sendKeys(Keys.PAGE_DOWN); scrollvalid.sendKeys(Keys.PAGE_DOWN); 我的自动化脚本应该找到PDF元素并向下滚动页面。相反,我收到此错误:org.openqa.selenium.TimeoutException:等待90秒后等待By.id定位的元素可见:插件超时 有人面临类似的问题吗?提前致谢。

3
并行无限Java流内存不足
我试图理解为什么以下Java程序给出OutOfMemoryError,而没有的相应程序没有给出.parallel()。 System.out.println(Stream .iterate(1, i -> i+1) .parallel() .flatMap(n -> Stream.iterate(n, i -> i+n)) .mapToInt(Integer::intValue) .limit(100_000_000) .sum() ); 我有两个问题: 该程序的预期输出是什么? 如果没有,.parallel()这似乎只是输出sum(1+2+3+...),这意味着它只是在flatMap的第一个流“卡住”了,这是有道理的。 对于并行,我不知道是否有预期的行为,但是我的猜测是它以某种方式交错了第一个n左右的流,n并行工作者的数量在哪里。根据组块/缓冲行为,它也可能略有不同。 是什么导致它的内存不足?我正在专门尝试了解这些流是如何在后台实现的。 我猜有些东西阻塞了流,因此它永远不会完成,并且能够摆脱生成的值,但是我不太清楚事物的评估顺序和缓冲发生的位置。 编辑:如果相关,我正在使用Java 11。 Editt 2:即使对于简单的程序IntStream.iterate(1,i->i+1).limit(1000_000_000).parallel().sum(),显然也会发生同样的事情,因此它可能与limit而不是的懒惰有关flatMap。

3
+0和-0显示int和float数据的不同行为
我读过这篇文章,负数和正数为零。 据我了解,以下代码应该给出true 和true 作为输出。 但是,它是给出false和true作为输出。 我正在将负零与正零进行比较。 public class Test { public static void main(String[] args) { float f = 0; float f2 = -f; Float F = new Float(f); Float F1 = new Float(f2); System.out.println(F1.equals(F)); int i = 0; int i2 = -i; Integer I = new Integer(i); Integer I1 …
16 java  java-8 

1
OneNote解析-如何获取文档中的文本Blob?
我正在为.one文件扩展名创建一个解析器,完成后我将其添加到Apache Tika项目中。 这是我正在创建的APL 2.0许可的开源项目:https : //github.com/nddipiazza/onenote-parser-java 我在这里使用了规范文档:https : //docs.microsoft.com/zh-cn/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50 首先,我移植了这个开源C ++项目中的代码:https : //github.com/dropbox/onenote-parser 我在解析文档方面已经走了很长一段路,但是遇到了障碍。 这是我用来解析的OneNote文件:https : //drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view? usp =sharing 我无法在解析的结果中查看Section1TextArea1和Section1TextArea2。因此,我缺少某种关键数据解析元素或其他东西。 它绝对在OneNote文件本身中。我可以在十六进制查看器中看到它: 这是JSON解析输出:https : //gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267 我觉得规范文档缺少解析该专有格式所需的一些非常重要的信息。 我缺少哪些主要元素,导致我没有获得实际的文本内容?

2
无需sdkmanager即可安装Android Studio
我一直在使用针对iOS设备的macOS 10.15.3在Flutter中进行编程。今天,我也尝试安装Android Studio,以进行扩展。安装过程没有错误,但是Library/Android/sdk/没有tools子目录,这是一个问题,因为sdkmanager应该在中找到Library/Android/sdk/tools/bin。 我注意到这一点是因为跑步flutter doctor给了我: ✗ Android license status unknown. Try re-installing or updating your Android SDK Manager. See https://developer.android.com/studio/#downloads or visit https://flutter.dev/setup/#android-setup for detailed instructions. 我尝试重新安装Android Studio(没有区别)。在线发布的其他解决方案都讨论Java版本,因此我将JRE从1.7升级到1.8,并尝试重新安装Android Studio(没有区别),然后将JDK升级到最新版本(因此Java版本为11.0.6)并尝试安装再次使用Android Studio(没有区别)。在上述过程中,我还将Flutter升级到了v1.12.13 + hotfix.8,但是这个错误不会消失。 如果输入,flutter doctor --android-licenses我得到: Android sdkmanager tool not found (/Users/macuser/Library/Android/sdk/tools/bin/sdkmanager). Try re-installing or updating your Android SDK, visit https://flutter.dev/setup/#android-setup …

8
IntelliJ:错误:java:错误:不支持发行版本5
我正在使用IntelliJ IDEA Ultimate 2019.3.1。每当我尝试启动任何简单的Java Maven项目(甚至可能是一个简单的Hello World)时,都会出现以下错误: Error:java: error: release version 5 not supported java --version通过终端运行,我得到以下输出: openjdk 11.0.5 2019-10-15 OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.1) OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.1, mixed mode, sharing) javac --version通过终端运行,我得到以下输出: javac 11.0.5 要在Java编译器的设置(如建议在这里)我看到这一点: 我尝试将“ 目标字节码版本 ” 编辑为1.8,但出现以下错误: Error:(1, 26) java: package javafx.application does not exist Error:(2, …


4
生成给定开始,结束和步骤的值的List <Double>序列的最佳方法?
实际上,我很惊讶我无法在这里找到答案,尽管也许我只是使用了错误的搜索词或其他内容。我能找到的最接近的是this,但是他们询问如何生成double具有特定步长的s 的特定范围,答案也是如此。我需要一些可以生成具有任意开始,结束和步长大小的数字的东西。 我算起来也有是在图书馆这样的一些方法已经某处,但如果让我无法轻松地找到它(再次,也许我只是用错了搜索词或某事)。因此,这是我在过去几分钟内自行完成的操作: import java.lang.Math; import java.util.List; import java.util.ArrayList; public class DoubleSequenceGenerator { /** * Generates a List of Double values beginning with `start` and ending with * the last step from `start` which includes the provided `end` value. **/ public static List&lt;Double&gt; generateSequence(double start, double end, double step) { …
14 java  double  sequence 

2
比较三个变量的数学方法
在Java中,我被分配以比较两个3个正双变量,而忽略它们的顺序。我做了以下事情: if ((a1 == a2 &amp;&amp; b1 == b2 &amp;&amp; c1 == c2) || (a1 == a2 &amp;&amp; b1 == c2 &amp;&amp; c1 == b2) || (a1 == b2 &amp;&amp; b1 == a2 &amp;&amp; c1 == c2) || (a1 == b2 &amp;&amp; b1 == c2 &amp;&amp; c1 == a2) || …
14 java  math  compare 

4
Spring Security 5替换OAuth2RestTemplate
在,和spring-security-oauth2:2.4.0.RELEASE等类中OAuth2RestTemplate,所有这些都已被标记为已弃用。OAuth2ProtectedResourceDetailsClientCredentialsAccessTokenProvider 从这些类的javadoc中,它指向Spring Security迁移指南,该指南暗示人们应迁移到核心Spring-security 5项目。但是,我在寻找如何在该项目中实现用例时遇到了麻烦。 如果您希望对应用程序的传入请求进行身份验证并且想要使用第三方OAuth提供程序来验证身份,则所有文档和示例都讨论了与第三部分OAuth提供程序集成的问题。 在我的用例中,我要做的就是RestTemplate向受OAuth保护的外部服务发出请求。目前OAuth2ProtectedResourceDetails,我使用客户ID和密码创建了一个,并将其传递给OAuth2RestTemplate。我还ClientCredentialsAccessTokenProvider向添加了一个自定义,该自定义OAuth2ResTemplate仅向我使用的OAuth提供程序所需的令牌请求添加了一些额外的标头。 在spring-security 5文档中,我找到了提到自定义令牌请求的部分,但该部分还是与第三方OAuth提供者对传入请求进行身份验证有关。目前尚不清楚如何将其与类似的东西结合使用,ClientHttpRequestInterceptor以确保对外部服务的每个传出请求都首先获得令牌,然后再将令牌添加到请求中。 同样,在上面链接的迁移指南中,引用了一个OAuth2AuthorizedClientService,它说对在拦截器中使用很有用,但是这看起来又像是依赖于这样的东西ClientRegistrationRepository,如果您想使用,它似乎在其中为第三方提供商维护注册。提供以确保对传入请求进行身份验证。 有什么方法可以利用spring-security 5中的新功能来注册OAuth提供程序,以便获得令牌以添加到应用程序的传出请求中?

1
1 MB或更大的Java字节数组占用RAM的两倍
在Windows 10 / OpenJDK 11.0.4_x64上运行下面的代码会作为输出used: 197和输出expected usage: 200。这意味着200个字节数组(一百万个元素)占用了大约。200MB RAM。一切都很好。 当我将代码中的字节数组分配从new byte[1000000]更改为new byte[1048576](即更改为1024 * 1024个元素)时,它会作为输出used: 417和产生expected usage: 200。有没有搞错? import java.io.IOException; import java.util.ArrayList; public class Mem { private static Runtime rt = Runtime.getRuntime(); private static long free() { return rt.maxMemory() - rt.totalMemory() + rt.freeMemory(); } public static void main(String[] args) throws InterruptedException, …


2
Java ThreadPoolExecutor:动态更新核心池大小会间歇性地拒绝传入的任务
我遇到了一个问题,如果ThreadPoolExecutor在创建池之后尝试将核心池的大小调整为其他数字,那么RejectedExecutionException即使我提交queueSize + maxPoolSize的任务数从来没有超过,我也会间歇性地拒绝某些任务。 我试图解决的问题是扩展ThreadPoolExecutor,以基于坐在线程池队列中的挂起执行来调整其核心线程的大小。我需要这样做,因为默认情况下,只有在队列已满时,a ThreadPoolExecutor才会创建一个新的Thread。 这是一个演示了该问题的小型独立的Pure Java 8程序。 import static java.lang.Math.max; import static java.lang.Math.min; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadPoolResizeTest { public static void main(String[] args) throws Exception { // increase the number of iterations if unable to reproduce // for …

4
MacOS Catalina(v 10.15.3):错误:由于无法验证开发人员,因此无法打开“ chromedriver”。无法启动Chrome浏览器
我最近将Mac机器升级到OS Catalina(v 10.15.3)。升级后,我无法使用硒启动chrome驱动程序。 当我运行硒代码启动chrome浏览器时,我遇到以下错误。 ““ chromedriver”无法打开,因为无法验证开发人员”。“ macOS无法验证此应用程序没有恶意软件。” 请帮我!
13 java  macos  selenium 

2
如何预热Java类以避免缓慢的首次调用?
我正在做一个项目,我需要所有API调用花费少于1秒的时间,但是我遇到的问题是第一次调用每条路由的速度都慢于随后的路由。 目前,首次拨打/ login的时间为3.6秒,接下来的通话为170毫秒,其他所有路由都相同。 我发现-XX:+TraceClassLoading在第一次调用时使用了该类,这些类已加载到内存中,这导致了性能问题。 但是,我没有找到一种在启动时加载所有类的简便方法,对于每个新服务,我需要在ApplicationRunner中添加一个热身调用。 是否有人可以自动加载SpringBoot应用程序的类或预热其所有路由的解决方案?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.