Java:startingPath 作为“public static final”异常

2024-03-13

[已更新,对更改感到抱歉,但现在是真正的问题了]对于 getCanonicalPath() 方法的异常,我无法在其中包含 try-catch-loop。我尝试先用方法解决问题,然后在那里声明值。问题是它是最终的,我无法更改它。那么如何将startingPath 设置为“public static final”。

$ cat StartingPath.java 
import java.util.*;
import java.io.*;

public class StartingPath {
 public static final String startingPath = (new File(".")).getCanonicalPath();

 public static void main(String[] args){
  System.out.println(startingPath);
 }
}
$ javac StartingPath.java 
StartingPath.java:5: unreported exception java.io.IOException; must be caught or declared to be thrown
 public static final String startingPath = (new File(".")).getCanonicalPath();
                                                                           ^
1 error

您可以提供静态方法来初始化静态变量:

public static final String startingPath = initPath();

private static String initPath() {
    try {
        return new File(".").getCanonicalPath();
    } catch (IOException e) {
        throw new RuntimeException("Got I/O exception during initialization", e);
    }
}

或者您可以在静态块中初始化变量:

public static final String startingPath;

static {
    try {
        startingPath = new File(".").getCanonicalPath();
    } catch (IOException e) {
        throw new RuntimeException("Got I/O exception during initialization", e);
    }
}

EDIT:在这种情况下你的变量是static所以没有办法声明抛出的异常。仅供参考,如果变量是非static您可以通过在构造函数中声明抛出的异常来做到这一点,如下所示:

public class PathHandler {

    private final String thePath = new File(".").getCanonicalPath();

    public PathHandler() throws IOException {
        // other initialization
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:startingPath 作为“public static final”异常 的相关文章

随机推荐

  • 为什么 svn import 选项无法检测文件重复

    如果我想签入 SVN 中已存在的同名文件 在这种情况下我将无法提交 例如 Name doc and name doc 但是 在这种情况下我将能够导入 这种情况甚至适用于文件夹名称 这可以防止将来进行结账操作 有没有办法防止文件或文件夹重复
  • 运行桌面版 libgdx 示例 gdx-invaders 时出现 java.lang.NoClassDefFoundError

    我正在构建 libgdx 的 gdx invaders 示例 有两个项目 gdx入侵者 基础项目 作为桌面 Java 应用程序运行gdx 入侵者 android项目 依赖于 gdx invaders 并作为 Android 应用程序运行 我
  • Golang反射:无法设置包装结构的接口字段

    我正在尝试实现一种方法 该方法可以更改可以具有任意结构的对象中的字段值 当我有指向结构的指针时 字段的遍历没有问题 但是 当我有一个接口不包装指向结构的指针而是包装结构本身时 我无法设法更改字段 简而言之 The following doe
  • 我什么时候必须声明 session_start(); ?

    所以我是 PHP 的初学者 所以我需要一些帮助 我正在尝试确定何时开始会议 我应该在用户首次注册时执行此操作还是在用户登录时执行此操作 另外 会话是否 通用 意味着当我检查会话时它会起作用还是我必须在所有页面中包含一个文件来检查某人是否有会
  • .NET 中的 DDD / 聚合

    我一直在阅读 Evans 关于 DDD 的书 并且正在思考应该如何在 NET 中实现聚合 目前 我只能想出一种方法 将聚合隔离在单独的类库中 然而 这似乎有点矫枉过正 我更愿意将所有域对象保留在一个库中 我想知道是否有不同的方法 1 lib
  • 使用 Criteria API 从 NHibernate 获取不同的结果集?

    我试图使用 NHibernate 中的 Criteria API 获得不同的结果 我知道使用 HQL 可以做到这一点 但我更喜欢使用 Criteria API 来执行此操作 因为我的应用程序的其余部分仅使用此方法编写 我找到这个论坛帖子 h
  • 使用 NEON 对 ARM 汇编中的四字向量中的所有元素求和

    我对组装相当陌生 尽管手臂信息中心通常很有帮助 但有时这些说明可能会让新手感到有点困惑 基本上我需要做的就是对四字寄存器中的 4 个浮点值求和 并将结果存储在单个精度寄存器中 我认为 VPADD 指令可以满足我的需要 但我不太确定 你可以尝
  • 如何从NLP Tree中提取元素?

    我正在使用NLP包来解析句子 我怎样才能从Tree创建的输出 例如 我想抓住名词短语 NP 来自下面的示例 library NLP library openNLP s lt c Really I like chocolate because
  • 在所有页面中正确包含 php 标头

    我会包含一个 php 标头 mysite com header php 在站点的所有页面中 怎样做才正确呢 有相关链接 这没有帮助 你可以这样做 include SERVER DOCUMENT ROOT header php
  • 侦听大多数端口时出现 Node.js EACCES 错误

    我正在测试一个应用程序 希望在heroku 上运行 但在本地也遇到问题 当它运行 http Server listen 时 它给我一个 EACCES 错误 但它只发生在某些端口上 所以 我在本地运行 joe joebuntu node gt
  • 尝试编写 C++ 包装函数时,无法在 Cython 中将 Numpy 数组转换为 OpenCV Mat

    我正在尝试实施cv cuda warpPerspective在 python2 中 有一篇关于如何做到这一点的非常精彩的文章 link https stackoverflow com a 42401559 7555390 我按照该帖子中描述
  • Jquery - 调暗整个页面并淡出一个 div 元素

    我正在尝试执行以下操作 单击链接会触发一个功能 该功能将显示一个 DIV page cover 使整个背景变暗 该 div 的 z 索引为 999 然后我想要另一个 div red 出现在暗淡的背景 淡出 显示上 并具有更高的 z inde
  • 如何使用 git 存储库跨项目组织共享代码/资产

    我有一个场景 其中基础项目由java代码和网站文件 jsp html javascript 模板 css 图像等 组成 创建此基础项目的变体的原因如下 a 白标 定制 b 基于此项目的新项目 但有附加功能 在 java 和 web 文件中
  • npm 已弃用警告 – 我需要更新某些内容吗?

    做完之后npm install为了获取项目的依赖项 我经常收到很多这样的消息 npm WARN deprecated email protected cdn cgi l email protection lodash lt 2 0 0 is
  • 多对多关联表上的 SQLAlchemy 关系

    我正在尝试建立与另一个多对多关系的关系 代码如下所示 from sqlalchemy import Column Integer ForeignKey Table ForeignKeyConstraint create engine fro
  • 构造函数技巧

    我认为这是不可能的 但我想在放弃之前问你一下 我想要类似 constexpr 增量的东西 include
  • PyCharm Django 上一个项目的服务器在打开并运行另一个项目后仍然运行

    重现问题的步骤 打开第一个项目 py 管理 py 运行服务器 现在我可以通过地址在浏览器中看到我的 Project 1 网站http 127 0 0 1 8000 http 127 0 0 1 8000 在 PyCharm 中关闭项目并打开
  • 强力查询中的匹配列表/表

    我认为这必须有一个简单的答案 但我找不到任何例子 我必须将列表的每个成员与子字符串列表进行比较 以查看该成员是否包含子字符串 如果包含 则将该子字符串返回到与第一个列表的成员位于同一位置的第三个列表 Example ListA help m
  • Ubuntu Nginx/Laravel 500 内部服务器错误

    当我尝试访问时说 Http localhost page我从 nginx 收到 500 内部服务器错误 500 Internal Server Error nginx 1 1 19就是页面上的全部内容 在日志文件中我收到此错误 2014 0
  • Java:startingPath 作为“public static final”异常

    已更新 对更改感到抱歉 但现在是真正的问题了 对于 getCanonicalPath 方法的异常 我无法在其中包含 try catch loop 我尝试先用方法解决问题 然后在那里声明值 问题是它是最终的 我无法更改它 那么如何将start