Questions tagged «java»

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



1
为什么array [idx ++] + =“ a”在Java 8中增加一次idx,而在Java 9和10中增加两次?
为了挑战,一位高尔夫球手代码 编写了以下代码: import java.util.*; public class Main { public static void main(String[] args) { int size = 3; String[] array = new String[size]; Arrays.fill(array, ""); for(int i = 0; i <= 100; ) { array[i++%size] += i + " "; } for(String element: array) { System.out.println(element); } } } 在Java …
751 java  java-8  javac  java-9  java-10 

30
如何在Java中加入两个列表?
条件:请勿修改原始清单;仅JDK,无外部库。一线或JDK 1.3版本的加分点。 有没有比以下更简单的方法: List<String> newList = new ArrayList<String>(); newList.addAll(listOne); newList.addAll(listTwo);
749 java  list  jdk1.5 



11
在Java / Maven中处理“ Xerces地狱”?
在我的办公室里,仅提及Xerces一词就足以引起开发人员的致命愤怒。粗略地浏览SO上的其他Xerces问题似乎表明,几乎所有Maven用户在某个时候都被该问题“感动”。不幸的是,了解问题需要对Xerces的历史有一点了解... 历史 Xerces是Java生态系统中使用最广泛的XML解析器。几乎所有用Java编写的库或框架都以某种能力使用Xerces(如果不是直接使用,则是透明地使用)。 到目前为止,官方二进制文件中包含的Xerces jar 尚未进行版本控制。例如,Xerces 2.11.0实现jar被命名为xercesImpl.jarnot xercesImpl-2.11.0.jar。 Xerces团队不使用Maven,这意味着他们不将正式发行版上载到Maven Central。 Xerces过去以单个jar(xerces.jar)的形式发布,但被拆分为两个jar,一个包含API(xml-apis.jar),一个包含这些API的实现(xercesImpl.jar)。许多较旧的Maven POM仍声明依赖于xerces.jar。在过去的某个时候,Xerces也发布为xmlParserAPIs.jar,某些较早的POM也依赖于此。 将jar部署到Maven存储库的人分配给xml-apis和xercesImpl jar的版本通常是不同的。例如,即使xml-apis都来自Xerces 2.8.0,也可以给它xml版本1.3.03,给xercesImpl版本2.8.0。这是因为人们经常用实现的规范版本标记xml-apis jar。还有就是这是一个非常不错的,但不完全击穿这里。 使事情复杂化的是,Xerces是JRE中包含的XML处理Java API(JAXP)的参考实现中使用的XML解析器。实现类在com.sun.*名称空间下重新打包,这使得直接访问它们很危险,因为它们在某些JRE中可能不可用。但是,并非所有的Xerces功能都通过java.*和javax.*API 公开;例如,没有API公开Xerces序列化。 令人困惑的是,几乎所有servlet容器(JBoss,Jetty,Glassfish,Tomcat等)都随Xerces一起放在其一个或多个/lib文件夹中。 问题 解决冲突 由于上述某些(或全部)原因,许多组织在其POM中发布和使用Xerces的自定义版本。如果您的应用程序很小并且仅使用Maven Central,那么这并不是真正的问题,但是对于Artifactory或Nexus代理多个存储库(JBoss,Hibernate等)的企业软件而言,这很快就成为一个问题: 例如,组织A可能发布xml-apis为: <groupId>org.apache.xerces</groupId> <artifactId>xml-apis</artifactId> <version>2.9.1</version> 同时,组织B可能发布以下内容jar: <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.3.04</version> 尽管B的jar版本低于A的版本jar,但Maven不知道它们是相同的工件,因为它们具有不同 groupId的。因此,它不能执行冲突解决,并且两个都 jar将作为已解决的依赖项包括在内: 类加载器地狱 如上所述,JRE在JAXP RI中与Xerces一起提供。将所有Xerces Maven依赖项标记为<exclusion>s或as 会很好<provided>,您所依赖的第三方代码可能会或可能不会与您使用的JDK的JAXP中提供的版本一起使用。另外,您还可以将Xerces jars放在servlet容器中以应对。这给您提供了许多选择:是否删除servlet版本,并希望您的容器在JAXP版本上运行?离开servlet版本更好,希望您的应用程序框架在servlet版本上运行是否更好?如果上面概述的一两个未解决的冲突成功地渗入了您的产品(在大型组织中很容易发生),您很快就会陷入类加载器地狱中,想知道类加载器在运行时选择的是哪个版本的Xerces,是否将在Windows和Linux中选择相同的jar(可能不是)。 解决方案? 我们试过标志认证的所有Xerces的Maven依赖作为<provided>或作为<exclusion>,但这是给难以执行(尤其是大型团队)的文物有这么多的别名(xml-apis,xerces,xercesImpl,xmlParserAPIs,等)。此外,我们的第三方库/框架可能无法在JAXP版本或servlet容器提供的版本上运行。 我们如何最好地使用Maven解决这个问题?我们是否必须对依赖项进行这种细粒度的控制,然后依靠分层的类加载?是否有某种方法可以全局排除所有Xerces依赖关系,并强制我们所有的框架/库使用JAXP版本? 更新:Joshua Spiewak已将Xerces构建脚本的修补程序版本上载到XERCESJ-1454,从而可以上载到Maven Central。投票/观看/贡献这个问题,让我们一劳永逸地解决这个问题。


15
Mac OS X上的Java安装在哪里?
我刚刚从此处从Mac OS 10.7.5下载了Java 7u17 ,然后成功安装了它。为了进行一些JNI编程,我需要知道Mac上Java的安装位置。 我以为该/Library/Java/JavaVirtualMachines/文件夹内会有一个名为之类的文件夹1.7.0.jdk,但后来我发现该文件夹为空。通过ls /Library/Java/JavaVirtualMachines/在终端中运行确认了这一点。我已经尝试搜索它,以了解它是否已安装在其他地方,但这似乎并没有解决任何问题。 有人可以告诉我Mac上Java的安装位置吗?
726 java  macos 

23
如何比较Java中的字符串?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:КаксравниватьстрокивJava的? ==到目前为止,我一直在程序中使用运算符比较所有字符串。但是,我遇到了一个错误,将其中一个更改为错误.equals(),并修复了该错误。 是==坏?什么时候应该使用它,不应该使用它?有什么不同?
724 java  string  equality 


18
如何在Java中将数组转换为Set
我想将数组转换为Java中的Set。有一些明显的方法可以做到这一点(例如,循环执行),但是我想要一些更整洁的东西,例如: java.util.Arrays.asList(Object[] a); 有任何想法吗?
717 java  collections  arrays  set 

10
查询字符串参数的Java URL编码
说我有一个网址 http://example.com/query?q= 并且我有一个用户输入的查询,例如: 随机词£500银行$ 我希望结果是正确编码的URL: http://example.com/query?q=random%20word%20%A3500%20bank%20%24 实现此目标的最佳方法是什么?我尝试URLEncoder创建URI / URL对象,但是没有一个是正确的。
710 java  http  url  encoding  urlencode 



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.