小编Nic*_*cue的帖子

在Java中,您如何编写可能抛出异常的Iterable的等价物?

在java中,一个类可以实现Iterable,它允许你使用foreach()语句和迭代合成糖:

for(T t:ts) ...
Run Code Online (Sandbox Code Playgroud)

但是,这不允许您在迭代器的构造上抛出异常.如果您正在迭代网络,文件,数据库等,那么能够抛出异常会很好.显而易见的候选者是java.io.InputStream,Reader和java.nio.Channel代码,但这些都不能像Iterable接口那样使用Generics.

对于这种情况,是否存在常见的习惯用法或Java API?

澄清:这是在询问是否存在用于从非内存源迭代对象的模式或替代接口.正如响应者所说的那样,不推荐使用RuntimeExceptions来解决问题,也不建议使用我想要的东西.

编辑2:感谢答案到目前为止.共识似乎是"你不能".因此,我可以将问题扩展到"在这种情况下,如果这种情况有用,你会做什么?" 只需编写自己的界面?

java exception

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

在httpclient中,将HttpEntity转换为String的最优雅/正确的方法是什么?

我正在使用Apache httpcomponents Java库获取一个网页.连接结果后,我得到的是一个返回an HttpEntity的方法getContent(),InputStream并且还有一个writeTo()写入OutputStream的方法.

我想将结果转换为String以提取信息.最优雅(和安全)的方法是什么?

一些可能的解决方

  • 写入a ByteArrayOutputStream然后使用String构造函数将这些字节转换为String
  • 使用InputStreamReader直接从流中读取,并放入StringBuilder

这些都感觉有点难看.你会建议选择其中之一吗?

java apache-httpcomponents

5
推荐指数
2
解决办法
2255
查看次数

Maven Wagon插件:Can wagon:上传到多个位置?

我正在研究Maven Wagon插件以尝试将一些工件上传到远程UNC服务器共享(\\servername\share\directory\to\put\to),并且我已将其配置为在POM中如此工作:

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-file</artifactId>
      <version>1.0-beta-7</version>
    </extension>
  </extensions>
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <executions>
      <execution>
        <id>upload-jar-to-folder</id>
        <phase>deploy</phase>
        <goals>
          <goal>upload</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <fromDir>${project.build.directory}</fromDir>
      <includes>*</includes>
      <url>file://localhost///${servername}/${sharename}</url>
      <toDir>directory/to/put/artifact</toDir>
    </configuration>
  </plugin>
  ...
</build>
Run Code Online (Sandbox Code Playgroud)

当我传入时,这适用于一台服务器-Dservername=x -Dsharename=y,但是如何将其扩展,以便我可以为QA或Prod运行部署,我需要部署多台服务器?

我已经考虑(并编写)了一个mvn wagon:upload -Penvironment#多次运行的脚本- 每个服务器一次 - 但这对我来说似乎有瑕疵.如果我正在炮轰一个脚本来处理这个过程,我也可以编写整个部署的脚本.然而,这剥夺了Wagon(和Maven)的实用性......

有没有办法<executions>为一个目标运行多个?例如,wagon:upload在我刚运行时运行多个配置文件配置的任务mvn deploy -Pqa

maven wagon maven-wagon-plugin

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

使用maven-wagon-plugin上传问题

site-deploy当我在调用release:perform目标时,我试图让wagon插件在生命周期中上传文件时,我有一个奇怪的问题.似乎wagon在im调用时正确上传文件,mvn site-deploy但它只是响应

无需上传

当调用mvn release:perform哪个应该调用site site-deploy文档中所述的阶段时.

这是旅行车的插件配置.

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>wagon-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
                <execution>
                    <id>upload-jars</id>
                    <phase>deploy site-deploy</phase>
                    <goals>
                        <goal>upload</goal>
                    </goals>
                    <configuration>
                        <fromDir>target/checkout/target</fromDir>
                        <includes>*.jar</includes>
                        <url>scpexe://nohost.com</url>
                        <toDir>/var/www/projects/test</toDir>
                        <serverId>server - projects</serverId>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

maven告诉我正确的目标已经开始:

[INFO] Executing goals 'deploy site-deploy'...
[INFO] [INFO] Scanning for projects...
Run Code Online (Sandbox Code Playgroud)

但是旅行车没有上传任何东西:

[INFO] [INFO] --- wagon-maven-plugin:1.0-beta-3:upload (default) @ exp4j ---
[INFO] [INFO] Nothing to upload.
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD SUCCESS
Run Code Online (Sandbox Code Playgroud)

是否有人发现我的问题导致maven在调用site-deploy时按预期工作但在执行时失败release:perform

java maven maven-wagon-plugin

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

矩形Java Swing单选按钮?

我想在Java Swing应用程序中创建一组按钮,就像在绘图程序中的典型工具调色板中一样.也就是说,一组小方形按钮,每个按钮都包含一个图标,其中只有一个被按下,当你按下另一个按钮时,第一个按钮被取消选择.我已经想到了许多解决方案,但它们似乎都不是很容易/优雅.

这听起来像JRadioButton的工作,但如果你添加一个Icon,你仍然会得到一个小圆圈,这是相当低效的空间.我想一个选择是为JRadioButton找到另一种外观和感觉或绘画代码.

另一个替代方案可能是将JButton添加到ButtonGroup,可能将JToggleButton.ToggleButtonModel设置为模型,但是没有所需的效果,因为标准JButton的绘制代码在选择时不会使其保持低调.可能会修改JButton代码来执行此操作.就像让它"按下"一样"选择"它.

第三种选择是使用普通的JButton,并添加一个常用的鼠标监听器,让它们保持按下或不按,并在按钮之间传递变化.

有人可以建议达到目标的最佳途径吗?我错过的一个简单的方法是最好的,但建议这三种选择中的哪一种最好,并指出如何开始也是有用的.

java swing jbutton jradiobutton jtogglebutton

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

Dart 中是否有用于对排序列表进行二分搜索的标准库函数?

Dart 中是否有对排序列表进行二分搜索的标准库方法?

我用谷歌搜索了一下,似乎在 flutter 中有一个,但在 dart 中找不到。

我还发现了这个错误,其中提到了lowerBound()二分搜索。似乎曾经有一个集合/算法包,但这似乎已被弃用,我在collections.dart.

编写一个并不难,但如果可能的话,我更喜欢使用标准库方法。

binary-search dart

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

Beanshell catch(ex):Exception还是Throwable?

beanshell catch(ex)捕获了什么类型的异常:Exception或Throwable?.

例:

try {
    .... } catch (ex) {     }
Run Code Online (Sandbox Code Playgroud)

java exception beanshell

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

如何配置apache httpcore 4以使用代理?

我正在尝试使用最新的(4.0.1)Apache http核心组件库.但是,我的网络浏览器通过代理 - 假设它是myproxy.com:9191.有人可以提供一些示例代码来获取一个简单的http获取将其用作代理吗?

我尝试在代码的开头添加以下内容,但没有任何乐趣:

ProxySelector.setDefault(new ProxySelector() {
  public List<Proxy> select(URI uri) {
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy.com", 9191);
    return Arrays.asList(new Proxy[]{proxy)});
  }
  public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
    ioe.printStackTrace();
  }
});
Run Code Online (Sandbox Code Playgroud)

java proxy http apache-httpclient-4.x

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

在Maven中如何使用wagon插件复制文件?

简介:如何使用Maven将一些生成的文件复制到Web服务器(例如IIS或Apache)目录中?

细节:我有一个在Maven中构建的工作应用程序.我已经设法使用webstart-maven-plugin构建它,它在目录中生成所有需要的文件(.jar和.jnlp)target/jnlp.它还会创建一个zip文件target/foo-1.0.zip.

目前webstart插件没有deploy目标 - 对它的请求最终在FAQ(问题3)上.它可能会在将来实施,但目前的建议是使用wagon-maven-plugin.

我从未使用过Wagon.首先,我想将文件复制到由Web服务器提供的本地目录中.后来我想远程复制它们,可能使用ftp.有人可以举例说明我需要添加的内容pom.xml以使本地副本正常工作(希望也是一个ftp示例吗?).我在文档中找不到它.从阅读我想我可能也需要Wagon Maven文件提供程序,但因为这似乎几乎没有文档,我不确定.

maven wagon maven-wagon-plugin maven-webstart-plugin

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

翻译scala StdLexical的新行?

我正在尝试lex(然后解析)一个C语言.在C中有预处理器指令,其中换行符很重要,然后是实际代码,它们只是空格.

执行此操作的一种方法是执行像早期C编译器这样的双通过程 - 为#指令设置单独的预处理器,然后将其输出调整为lex.

但是,我想知道是否可以在一个词法分析器中完成它.我很高兴编写scala解析器 - 组合器代码,但我不太确定如何StdLexical处理空格.

有人可以写一些简单的示例代码,这些代码可以说是#include一行(使用换行符)和一些简单的代码(忽略换行符)?或者这是不可能的,最好选择2-pass appproach?

scala newline lexer parser-combinators

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