小编age*_*154的帖子

当main方法抛出异常时,它意味着什么?

我正在审查我为明天上午的期末考试做准备的期中考试.我错了这个问题,但是没有正确的答案指出,我忽略了向教授询问它.

请考虑以下代码段:

public static void main(String[] args) throws FileNotFoundException
Run Code Online (Sandbox Code Playgroud)

关于此代码的以下哪些陈述是正确的?

  1. main方法旨在捕获和处理所有类型的异常.
  2. 主要方法是捕捉和处理FileNotFoundException.
  3. 如果FileNotFoundException发生,主要方法应该简单地终止.
  4. 如果发生任何异常,主要方法应该简单地终止.

我选择了第二个选项.

java exception

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

如何在gradle的应用程序插件"运行"任务的类路径中指定一个额外的文件夹?

我已成功配置我的gradle构建脚本,以创建我的应用程序的zip分发,并在根目录下添加一个额外的'config'文件夹.此文件夹仅包含(至少现在)应用程序正在使用的一个属性文件,并且位于应用程序的类路径中.

然而,我现在正在寻找的是对应用程序插件中的"运行"任务执行相同操作的方法.当我尝试以这种方式运行我的应用程序时(为了测试),我的程序无法运行,因为类试图在类路径的根目录上访问此属性文件.

如果我可以让IntelliJ或Eclipse将这个文件夹添加到其类路径中,就像其他文件夹(src/main/java,src/main/resources,...)那样我可以运行和调试我的代码在IDE中,无需调用gradle任务.我想尽量避免将此代码绑定到任何一个IDE,以便当任何人需要处理项目时,他们只需要导入build.gradle文件并让IDE生成所需的相应配置文件.

这是我的build.gradle文件:

apply plugin: 'application'

mainClassName = "MainClass"

startScripts {
    // Add config folder to classpath. Using workaround at
    // https://discuss.gradle.org/t/classpath-in-application-plugin-is-building-always-relative-to-app-home-lib-directory/2012
    classpath += files('src/dist/config')
    doLast {
        def windowsScriptFile = file getWindowsScript()
        def unixScriptFile = file getUnixScript()
        windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\config', '%APP_HOME%\\config')
        unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/config', '$APP_HOME/config')
    }
}

repositories {
    ...
}

dependencies {
    ...
}
Run Code Online (Sandbox Code Playgroud)

可能需要发生的是我需要将/ src/dist/config文件夹复制到构建目录并添加到类路径中,或者将其内容复制到已存在于类路径中的文件夹中.

java eclipse classpath intellij-idea gradle

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

什么是Control.IsHandleCreated需要?

我正在检查TabControl的内置.net控件的来源,我看到它在决定是否向集合添加或插入TabPage之前引用此属性.

if (this.owner.IsHandleCreated)
{
    this.owner.AddTabPage(tabPage, tabPage.GetTCITEM());
}
else
{
    this.owner.Insert(this.owner.TabCount, tabPage);
}
Run Code Online (Sandbox Code Playgroud)

这两个函数最终实现了相同的目标 - 它们将TabPage添加到内部"TabPages"集合的末尾......但我只是不明白为什么它应该与您使用的函数有关.

this指的ControlCollection是覆盖内置的Control.ControlCollection.owner是使用的TabControl ControlCollection.

c# tabcontrol winforms

11
推荐指数
1
解决办法
5520
查看次数

java"不可比"的例外?

我正在创建一个实现可比较的自定义类,如果有人试图比较两个我的定义无法比较的对象,我想抛出某种异常.API中是否已存在合适的异常,或者我是否需要创建自己的异常?

java exception comparable

10
推荐指数
1
解决办法
2200
查看次数

如何同时以多种方式散列单个文件?

我正在尝试设计一个简单的应用程序用于计算文件的CRC32/md5/sha1/sha256/sha384/sha512,我遇到了一些障碍.这是在C#中完成的.

我希望能够尽可能高效地完成这项工作,所以我最初的想法是在处理前先将文件读入内存流,但我很快就发现非常大的文件会导致内存耗尽.所以我似乎必须使用文件流.我认为问题在于,一次只能运行一个哈希函数,而使用文件流执行此操作需要一段时间才能完成每个哈希.

我怎样才能将一小段文件读入内存,使用所有6种算法处理它,然后转到另一个块...或者哈希不能以这种方式工作?

这是我原本尝试将文件读入内存.当我在内存流上运行散列算法之前尝试将CD映像读入内存时,它失败了:

    private void ReadToEndOfFile(string filename)
    {
        if (File.Exists(filename))
        {
            FileInfo fi = new FileInfo(filename);
            FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[16 * 1024];

            //double step = Math.Floor((double)fi.Length / (double)100);

            this.toolStripStatusLabel1.Text = "Reading File...";
            this.toolStripProgressBar1.Maximum = (int)(fs.Length / buffer.Length);
            this.toolStripProgressBar1.Value = 0;

            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                    this.toolStripProgressBar1.Value += 1;
                }

                _ms = ms;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# hash cryptography

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

当类型未知时,如何迭代Iterable对象?

对于家庭作业,我需要实现自己的PriorityQueue和PriorityQueueSort.我使用泛型来使它没有排序功能,但现在我被困在这里..

public static void PriorityQueueSort(Iterable<?> list, 
    PriorityQueue<?,?> pq) {
  if (!pq.isEmpty()) {
    throw new IllegalArgumentException("Non-Empty PriorityQueue");
  }

  for (Object obj : list) {

  }
}
Run Code Online (Sandbox Code Playgroud)

我需要传入一个列表和一个空的PriorityQueue,所以我最好猜测如何做到这一点就在上面.我应该如何攻击这个以便我可以遍历未知类型的列表,并将具有正确类型的该列表中的每个元素添加到优先级队列中?


编辑:

由于确定我没有提供足够的信息,因此这里有一些细节.

我有一个自定义的PriorityQueue类,以及一个自定义的Entry类,它包含一个类型为K的键,其值为V.

我需要能够使用任何类型T获取任何可迭代列表并迭代它,获取每个项目并将其添加到最初为空的PriorityQueue作为具有空值的键.然后,我需要在我的PriorityQueue上连续调用removeMin()并将其按顺序添加回相同的列表对象.

public class PriorityQueue<K extends Comparable<? super K>,V> {

  private Entry<K,V> _head;
  private Entry<K,V> _tail;
  private int _size;

  public PriorityQueue() {
    this._head = null;
    this._tail = null;
    this._size = 0;
  }

  public int size() {
    return _size;
  }

  public boolean isEmpty() {
    return (size() == 0);
  }

  public Entry<K,V> min() { …
Run Code Online (Sandbox Code Playgroud)

java algorithm iterable

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

如何使用gnuplot绘制简单的2d矢量箭头?

这是我第一次尝试使用gnuplot,我找不到任何关于如何实现这一点的说明.我发现的最接近的是:

http://gnuplot.sourceforge.net/docs_4.2/node259.html

使用1:2:3:4绘制'file.dat',向量头填充lt 2

但我找不到任何关于"file.dat"的解释.

那么有人可以给出一个简单的例子来说明如何绘制一个简单的2d矢量箭头吗?谢谢.

gnuplot

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

使用 FFMpeg/Xuggler 从视频文件中读取地理位置数据

使用 MediaInfo 应用程序,我可以看到用 iPhone 5 拍摄的文件包含地理位置元数据,并用\xc2\xa9xyzcom.apple.quicktime.location.ISO6709标记。然而,我无法找到任何使用 xuggler 获取这些数据的方法。

\n\n
Format                                   : MPEG-4\nFormat profile                           : QuickTime\nCodec ID                                 : qt   0000.00 (qt  )\nFile size                                : 7.50 MiB\nDuration                                 : 3s 537ms\nOverall bit rate                         : 17.8 Mbps\nRecorded date                            : 2015-12-17T14:32:23-0330\nEncoded date                             : UTC 2015-12-17 18:02:23\nTagged date                              : UTC 2015-12-17 18:02:27\nWriting application                      : 8.4.1\nWriting library                          : Apple QuickTime\nModel                                    : iPhone 5\n\xc2\xa9xyz                                     : +47.5184-052.8046+133.390/\nMake                                     : Apple\ncom.apple.quicktime.make                 : Apple\ncom.apple.quicktime.creationdate         : 2015-12-17T14:32:23-0330\ncom.apple.quicktime.location.ISO6709     : +47.5184-052.8046+133.390/\ncom.apple.quicktime.software             : 8.4.1\ncom.apple.quicktime.model                : iPhone 5\n
Run Code Online (Sandbox Code Playgroud)\n\n

顺便说一句,这个文件上似乎有很多元数据,在通过 xuggler 调试时我无法立即找到它们。

\n\n …

ffmpeg xuggler

5
推荐指数
0
解决办法
989
查看次数

如何在gradle中定义两个不同的“分发”任务?

gradle 中应用程序插件中的distTardistZip任务的正常行为似乎是将src/dist的内容复制到 zip 和 tar 文件中,但我在src/dist中有一个子文件夹,我想从默认分发中排除它,并将其包含在一个新的(扩展的)任务中,可能被称为 distZipWithJRE。

我已经能够在默认任务中排除此文件夹,如下所示:

distributions.main {
    contents {
        from('build/config/main') {
            into('config')
        }

        from('../src/dist') {
            exclude('jre')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何定义与原始(未修改)任务一样行为的第二个任务?

gradle

4
推荐指数
2
解决办法
1333
查看次数

IntelliJ IDEA中的代码标记有编译器错误,它在Eclipse中正常工作

我正在尝试设置我的IntelliJ工作区以在eclipse项目上进行开发.我遇到的一件事情令人困惑:

Error:(24, 8) java: SomeClass.java:24: getHeader(java.lang.String) in org.springframework.mock.web.MockHttpServletResponse cannot implement getHeader(java.lang.String) in javax.servlet.http.HttpServletResponse; attempting to use incompatible return type
found   : java.lang.Object
required: java.lang.String
Run Code Online (Sandbox Code Playgroud)

问题是以下类定义:

public class SomeClass extends MockHttpServletResponse {
Run Code Online (Sandbox Code Playgroud)

问题似乎是因为MockHttpServletResponse实现Collection<String> getHeaders(String)public List getHeaders(String name).在这里,我可以看到实现方法使用raw List,其中父级要求Collection输入泛型String.除了可能不是类型安全之外,为什么IntelliJ会将此标记为编译器错误而不是警告?

我无法更改任何这些库.我只是想在IntellJ 14中完成已经工作的东西而没有Eclipse 4.3+中的抱怨.

编辑:

我已经更新到IntelliJ 15.0,该项目现在使用Java 1.7而不是1.6.我仍在使用IntelliJ遇到这个问题,但问题并非在Eclipse中出现.我可以通过IntelliJ使用现有的Ant脚本编译项目,但我无法通过IDE进行调试.

这是我的班级定义

public class ExecutableServletResponse extends MockHttpServletResponse {
  ...
Run Code Online (Sandbox Code Playgroud)

以下是我的"消息"窗格中显示的错误:

Error:(24, 8) java: getHeader(java.lang.String) in org.springframework.mock.web.MockHttpServletResponse cannot implement getHeader(java.lang.String) in javax.servlet.http.HttpServletResponse
                return type java.lang.Object is not compatible with …
Run Code Online (Sandbox Code Playgroud)

java eclipse spring servlets intellij-idea

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