Questions tagged «java»

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

10
使用IMAP将邮件从GMail传输到Java应用程序
我想使用JavaMail和IMAP从Java应用程序访问Gmail中的邮件。为什么会出现SocketTimeoutException? 这是我的代码: Properties props = System.getProperties(); props.setProperty("mail.imap.host", "imap.gmail.com"); props.setProperty("mail.imap.port", "993"); props.setProperty("mail.imap.connectiontimeout", "5000"); props.setProperty("mail.imap.timeout", "5000"); try { Session session = Session.getDefaultInstance(props, new MyAuthenticator()); URLName urlName = new URLName("imap://MYUSERNAME@gmail.com:MYPASSWORD@imap.gmail.com"); Store store = session.getStore(urlName); if (!store.isConnected()) { store.connect(); } } catch (NoSuchProviderException e) { e.printStackTrace(); System.exit(1); } catch (MessagingException e) { e.printStackTrace(); System.exit(2); …

4
冒泡排序中的> vs.> =会导致明显的性能差异
我偶然发现了一些东西。起初,我认为可能是这种情况下分支错误预测的情况,但是我无法解释为什么分支错误预测会导致这种行为。 我用Java实现了两个版本的Bubble Sort,并进行了一些性能测试: import java.util.Random; public class BubbleSortAnnomaly { public static void main(String... args) { final int ARRAY_SIZE = Integer.parseInt(args[0]); final int LIMIT = Integer.parseInt(args[1]); final int RUNS = Integer.parseInt(args[2]); int[] a = new int[ARRAY_SIZE]; int[] b = new int[ARRAY_SIZE]; Random r = new Random(); for (int run = 0; …

10
使用和保留枚举的最佳实践
我在这里看到了几个有关处理和持久保存枚举式值的最佳方法的问题/讨论(例如,持久化适用于枚举的数据,如何使用NHibernate来持久化枚举),我想问一下一般共识。 尤其是: 这些值应如何在代码中处理? 应该如何将它们持久保存到数据库中(作为文本/作为数字)? 不同解决方案的权衡是什么? 注意:我已将本问题中最初包含的解释移至答案。

6
IllegalStateException的预期用途是什么?
今天在与同事的讨论中提出了这一点。 Javadocs for JavaIllegalStateException指出: 表示已在非法或不适当的时间调用了方法。换句话说,对于所请求的操作,Java环境或Java应用程序没有处于适当的状态。 而有效的Java说(第248页的第60项): 另一个通常重用的异常是IllegalStateException。如果由于接收对象的状态而调用是非法的,通常会抛出异常。例如,如果调用者在正确初始化某个对象之前尝试使用该对象,则将引发异常。 似乎这里有些差异。javadocs的第二句话听起来像是异常可以描述关于Java执行状态的非常广泛的条件,但是Effective Java中的描述听起来像是它用于特定于对象状态的条件,该对象的状态方法已被调用。 我在JDK(例如collections Matcher)和Guava中看到的用法肯定似乎属于Effective Java所谈论的类别(“此对象处于无法调用此方法的状态”)。这似乎也与IllegalStateException的兄弟姐妹一致IllegalArgumentException。 IllegalStateExceptionJDK中是否有任何与“ Java环境”或“ Java应用程序”相关的合法用法?还是有任何最佳实践指南倡导将其用于更广泛的执行状态?如果不是这样,为什么javadocs这样写呢?;)

14
在哪里可以找到Java中基于Trie的标准地图实现?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 2天前关闭。 改善这个问题 我有一个Java程序,它存储了很多从字符串到各种对象的映射。 现在,我的选择是依靠散列(通过HashMap)或二进制搜索(通过TreeMap)。我想知道在流行且优质的收藏库中是否有一种有效且基于标准的基于trie的地图实现? 我过去写过自己的书,但是我愿意使用一些标准的东西(如果有的话)。 快速澄清:虽然我的问题很笼统,但在当前项目中,我正在处理大量数据,这些数据已通过完全合格的类名或方法签名进行了索引。因此,存在许多共享前缀。



17
Maven无法在以下位置找到Javac编译器:
当我尝试生成战争文件时,它显示出一些错误,例如 [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar 当我这样做echo %path%时显示 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b in;C:\Program Files\Notepad++\;%JDK_HOME% 当我做 echo %JDK_HOME% D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin 当我的环境变量是jdk时,我不知道为什么maven引用jre。我还将安装的JRE更改为jdk1.6。
76 java  maven  javac 

6
Java单元测试,目录布局
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 1年前关闭。 改善这个问题 在为Java代码构建一套单元测试时,是否有关于将测试代码与源代码放置在何处的约定? 例如,如果我有一个/java包含一堆.java源文件的目录,那么最好将测试用例/java本身放在其中或使用类似的内容/java/test。 如果首选后者,那么在包外部无法使用类的private /protected成员时,如何测试代码的内部?

6
ResultSet异常-结果集开始之前
我无法从ResultSet对象获取数据。这是我的代码: String sql = "SELECT type FROM node WHERE nid = ?"; PreparedStatement prep = conn.prepareStatement(sql); int meetNID = Integer.parseInt(node.get(BoutField.field_meet_nid)); prep.setInt(1, meetNID); ResultSet result = prep.executeQuery(); result.beforeFirst(); String foundType = result.getString(1); if (! foundType.equals("meet")) { throw new IllegalArgumentException(String.format("Node %d must be of type 'meet', but was %s", meetNID, foundType)); } …
76 java  jdbc 

17
使用Java的Runtime.exec()时如何添加超时值?
我有一种用于在本地主机上执行命令的方法。我想向该方法添加一个超时参数,以便如果被调用的命令没有在合理的时间内完成,则该方法将返回错误代码。这是到目前为止的样子,无法超时: public static int executeCommandLine(final String commandLine, final boolean printOutput, final boolean printError) throws IOException, InterruptedException { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(commandLine); if (printOutput) { BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream())); System.out.println("Output: " + outputReader.readLine()); } if (printError) { BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); System.out.println("Error: " …


4
忽略Git中的.classpath和.project
我一直告诉我和其他人不要提交.classpath和.project文件,并使用Maven。 不知何故,初级开发人员总是忽略某些规则并提交这些文件,因此对于可以跳转并开始使用代码的新手来说,拥有这样的文件会更好。 现在从我的角度来看,我想尝试/做一些事情。当我克隆仓库时,我将获得.classpath和.project文件,当然在我的系统中它们也会被修改。 但是我希望它们不被提交,并且在与Git同步时应始终被忽略。这样我在本地系统中所做的更改就不会与Git混淆,而那些文件的Git更改也不会使我的本地文件混乱。 我该如何实现?无论如何,以这种方式标记要忽略的文件?
76 java  eclipse  git  gitignore 


4
Java正则表达式替换为捕获组
有什么方法可以用捕获组的已修改内容替换正则表达式? 例: Pattern regex = Pattern.compile("(\\d{1,2})"); Matcher regexMatcher = regex.matcher(text); resultString = regexMatcher.replaceAll("$1"); // *3 ?? 我想用$ 1乘以3代替所有出现的情况。 编辑: 看起来好像出了点问题:( 如果我用 Pattern regex = Pattern.compile("(\\d{1,2})"); Matcher regexMatcher = regex.matcher("12 54 1 65"); try { String resultString = regexMatcher.replaceAll(regexMatcher.group(1)); } catch (Exception e) { e.printStackTrace(); } 引发IllegalStateException:找不到匹配项 但 Pattern regex = …
76 java  regex 

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.