小编Thu*_*rge的帖子

如何将Eclipse项目文件夹结构更改为Maven/Gradle结构

我使用Eclipse创建了一个Java项目.由于我没有做任何特殊的事情,它的文件夹结构是所有Eclipse项目使用的默认文件夹结构:

Project
  -src
    -foo
      -MyClass.java
    -fooTests
      -MyTest.java
Run Code Online (Sandbox Code Playgroud)

但是,我想将其迁移到Maven使用的文件夹结构和Gradle等派生类.

Project
  -src
    -main
      -foo
        -MyClass.java
    -test
      -foo
        -MyTest.java
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有一种明显的方法来更改我的文件夹结构.最大的问题似乎是如何处理源文件夹.我尝试手动执行此操作,但它尝试将MyClass.java的包作为main.foo,我显然不想要.我还没有找到一个自动转换结构的maven或gradle插件.

如何将Eclipse项目文件夹结构更改为Maven/Gradle结构?

java eclipse gradle maven

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

我可以告诉BufferedImage最初的文件类型是什么吗?

在我的代码中,我有一个像ImageIO类一样加载的BufferedImage,如下所示:

BufferedImage image = ImageIO.read(new File (filePath);
Run Code Online (Sandbox Code Playgroud)

后来,我想将它保存为一个字节数组,但ImageIO.write方法需要我来接的GIF,PNG,或JPG格式来写我的图像(如本教程中介绍这里).

我想选择与原始图像相同的文件类型.如果图像最初是GIF,我不希望将其保存为PNG的额外开销.但如果图像最初是PNG,我不想失去半透明性,并将其保存为JPG或GIF.有没有办法可以从BufferedImage中确定原始文件格式是什么?

我知道我可以简单地解析文件路径,当我加载图像以找到扩展名并将其保存以供日后使用时,但理想情况下我喜欢直接从BufferedImage执行此操作.

java bufferedimage image javax.imageio

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

Java 7可以使用Apple Java Extensions吗?

为了帮助Java应用程序在Mac OS X上运行时看起来更像本机应用程序,Apple创建了Apple Java Extensions,以使Java应用程序更像Mac OS X.这些允许处理"关于"的行为菜单和支持拖放到应用程序图标.

但是,我找不到任何指示这些扩展是否包含在Java 7中甚至可用于Java 7的内容.我理解Apple将其OS X实现合并到OpenJDK中,但我不确定这些扩展是否已经过用它.我确实看到OpenJDKMac OS X端口的目标是"包含一个完整的,基于Cocoa的原生UI工具包",但我找不到太多关于它的含义.搜索网络并未取得丰硕成果,我不知道它们是否与Java 7兼容,甚至包括在内.

所以我猜我有三个问题:

  • 运行Java 7的Mac能否使用Apple Java Extensions?
  • 它们是否包含在Java 7中,如果没有,我可以将它们下载到我的应用程序中吗?
  • 这些Java 7兼容扩展是否有其他替代方案?

macos java-7

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

我应该选择哪种跑步者类型和其他设置在Team City上运行单元测试?

我已经TeamCity在我们的一个服务器上安装了CI,并且设法让它工作到一定程度,如果有人在SVN中提交,请TeamCity接收更改并在其末尾构建代码.

现在我正在尝试添加我们的Unit Test项目,TeamCity以便在提交代码时我们也知道是否有任何Test失败.

我们有一个测试项目(名为TeamTest)并且所有内容Unit Tests都写在其中,现在当我尝试将此项目添加为Build Stepin时TeamCity,我Runner Type应该选择什么?

我是否需要在构建服务器上安装其他软件才能使其正常工作?

我应该把什么路径Run tests from,如果亚军类型选择为NUnitMSTest?(它是项目TeamTest的 dll )

道歉,如果这些是愚蠢的问题,但我尝试搜索互联网,询问TeamCity博客,但无法找到我的问题的答案.

teamcity unit-testing

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

为什么Apache Commons库具有不一致的groupId,具体取决于项目?

Apache Commons是一组许多不同的库.在Maven Central Repository上,他们对groupIds有两种不同的命名约定,具体取决于项目,例如

  • 对于共享郎,共享压缩,共享韦弗 -'org.apache.commons'
  • for Commons CLI,Commons IO - 'commons-[library_name]'

他们之间有什么区别?

naming-conventions apache-commons maven

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

TeamCity:PhantomJS还没有在60000毫秒内捕获,杀死

我在CI环境中运行测试时遇到问题.使用Node v6.0.0/npm 3.8.6,配置在MacOS 10.11.6(El Capitan)上运行正常,但在运行带有Node v4.2.2/npm 2.14.7的Windows的TeamCity 9.1.6代理上,它很糟糕地失败了错误的PhantomJS have not captured in 60000 ms.

这是TeamCity上的示例堆栈跟踪:

[08:58:40][exec] 02 11 2016 08:58:41.095:DEBUG [config]: autoWatch set to false, because of singleRun
[08:58:40][exec] 02 11 2016 08:58:41.102:DEBUG [plugin]: Loading plugin karma-jasmine.
[08:58:40][exec] 02 11 2016 08:58:41.107:DEBUG [plugin]: Loading plugin karma-chrome-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.121:DEBUG [plugin]: Loading plugin karma-firefox-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.128:DEBUG [plugin]: Loading plugin karma-phantomjs-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.263:DEBUG [web-server]: Instantiating middleware
[08:58:41][exec] 02 11 2016 08:58:41.595:INFO [karma]: …
Run Code Online (Sandbox Code Playgroud)

phantomjs angularjs karma-runner karma-jasmine

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

将文件写入默认临时目录时拒绝权限

我的程序执行一些相当密集的操作,因此我使用临时文件来加快速度.我使用以下Java代码:

File scratchFile = new File(System.getProperty("java.io.tmpdir") + "WCCTempFile.tmp");
if (!scratchFile.exists())
    scratchFile.createNewFile();
Run Code Online (Sandbox Code Playgroud)

此代码在Mac OS X和Windows上运行正常.它在Java临时目录中创建一个临时文件,该目录由操作系统确定.

但是,当我在Linux(特别是Linux Mint)上尝试此程序时,我在"scratchFile.createNewFile()"行中收到以下错误

java.io.IOException: Permission Denied
Run Code Online (Sandbox Code Playgroud)

我真的很困惑这个错误,因为我认为该System.getProperty("java.io.tempdir")方法收集的临时目录将是用户可以写入的目录(并且它在其他操作系统上).这不是Linux的情况吗?有没有办法授予临时目录的访问权限?是否有其他我应该使用的目录?

java linux tempdir

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

如果哈希码不同,为什么HashSet允许相等的项?

HashSet的类有一个附加(对象o)方法,这是不从另一个类继承的.该方法的Javadoc说明如下:

如果指定的元素尚不存在,则将其添加到此集合中.更正式地,将指定的元素e这套如果此集合不包含任何元素e2,使得(e==null ? e2==null : e.equals(e2)).如果此set已包含该元素,则调用将保持set不变并返回false.

换句话说,如果两个对象相等,则不会添加第二个对象,并且HashSet将保持不变.然而,我发现,这是不正确的,如果对象ee2,有不同的哈希码尽管e.equals(e2).这是一个简单的例子:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;

public class BadHashCodeClass {

    /**
     * A hashcode that will randomly return an integer, so it is unlikely to be the same
     */
    @Override
    public int hashCode(){
        return new Random().nextInt();
    }

    /**
     * An equal method that will always return true
     */
    @Override
    public boolean equals(Object o){
        return true; …
Run Code Online (Sandbox Code Playgroud)

java hashcode hashset

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

在JTable中创建JComboBox,下拉列表始终可见

在Swing中可以在JTable中创建一个JComboBox,如本指南所示.他们有一张可爱的图片,展示了这一点:

在此输入图像描述

但是,未能显示的是,如果您没有单击该单元格,则下拉箭头不可见,它看起来像普通文本标签,如下所示:

在此输入图像描述

您可以看到针织有下拉箭头,因为我只是点击它,但其他人没有.遗憾的是,这并不理想,因为没有视觉提示可以单击单元格来显示选项列表.换句话说,"Sport"列看起来与"Last Name"列相同.其中一个是下拉列表,另一个不是,但它们在视觉上看起来相同,除非您碰巧点击其中一个.

有什么办法可以在Swing中完成吗?

编辑:澄清一下,我想要的是"运动"栏中的所有单元格都有箭头指示下拉菜单,即使它们不是最少点击的.基本上,我希望它看起来像一个组合框,无论我是否点击它.

java swing jtable jcombobox

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

如果应用Gradle插件,如何有条件地运行代码?

我有一个脚本插件,我想:

  • 检查是否已ivy-publish应用(通过apply plugin: ivy-publish):
  • 如果应用,则声明 publishing { repositories { ivy { } } }
  • 如果未应用,请运行其他代码

但是,我不确定如果应用了该ivy-publish插件如何实际运行代码,并且我在文档中找不到任何相关内容。有什么办法吗?

gradle gradle-plugin

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