{"record":{"id":"6c898cf656825f20","repo":"apache/dubbo","slug":"failed-to-load-resolvefile-cause-e-getmessage","errorCode":null,"errorMessage":"Failed to load <resolveFile>, cause: <e.getMessage()>","messagePattern":"Failed to load <resolveFile>, cause: <e\\.getMessage\\(\\)>","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java","lineNumber":329,"sourceCode":"\n    protected void resolveFile() {\n        String resolve = System.getProperty(interfaceName);\n        String resolveFile = null;\n        if (StringUtils.isEmpty(resolve)) {\n            resolveFile = SystemPropertyConfigUtils.getSystemProperty(CommonConstants.DubboProperty.DUBBO_RESOLVE_FILE);\n            if (StringUtils.isEmpty(resolveFile)) {\n                File userResolveFile = new File(\n                        new File(SystemPropertyConfigUtils.getSystemProperty(USER_HOME)), \"dubbo-resolve.properties\");\n                if (userResolveFile.exists()) {\n                    resolveFile = userResolveFile.getAbsolutePath();\n                }\n            }\n            if (resolveFile != null && resolveFile.length() > 0) {\n                Properties properties = new RegexProperties();\n                try (FileInputStream fis = new FileInputStream(resolveFile)) {\n                    properties.load(fis);\n                } catch (IOException e) {\n                    throw new IllegalStateException(\"Failed to load \" + resolveFile + \", cause: \" + e.getMessage(), e);\n                }\n\n                resolve = properties.getProperty(interfaceName);\n            }\n        }\n        if (StringUtils.isNotEmpty(resolve)) {\n            url = resolve;\n            if (logger.isWarnEnabled()) {\n                if (resolveFile != null) {\n                    logger.warn(\n                            COMMON_UNEXPECTED_EXCEPTION,\n                            \"\",\n                            \"\",\n                            \"Using default dubbo resolve file \" + resolveFile + \" replace \" + interfaceName + \"\"\n                                    + resolve + \" to p2p invoke remote service.\");\n                } else {\n                    logger.warn(\n                            COMMON_UNEXPECTED_EXCEPTION,","sourceCodeStart":311,"sourceCodeEnd":347,"githubUrl":"https://github.com/apache/dubbo/blob/3a3043227f5571d25eb2889de5bca22f2914843b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java#L311-L347","documentation":"Thrown by ReferenceConfigBase.resolveFile when the configured dubbo-resolve.properties file exists and is referenced but cannot be opened or read (IOException wrapped in IllegalStateException). The resolve file provides point-to-point URL overrides for specific interfaces, bypassing the registry.","triggerScenarios":"resolveFile() locates a resolve file (via -Ddubbo.resolve.file or ~/.dubbo-resolve.properties) but FileInputStream/Properties.load throws IOException — e.g. file permissions, file is a directory, or it became unreadable between the exists() check and load.","commonSituations":"dubbo-resolve.properties has wrong permissions (not readable by the app user). The path points to a directory or a broken symlink. File removed or locked by another process between exists() and load(). Container/sandbox environments with restricted home-directory access.","solutions":["Check the resolve file's permissions and ensure the application user can read it.","Confirm the path is a regular file, not a directory or dead symlink.","Remove or fix the -Ddubbo.resolve.file system property / the ~/dubbo-resolve.properties file if point-to-point override is not intended."],"exampleFix":"# before\n$ chmod 000 ~/dubbo-resolve.properties\n\n# after\n$ chmod 644 ~/dubbo-resolve.properties","handlingStrategy":"validation","validationCode":"// Pre-check the resolve file is readable before triggering resolveFile()\nString resolveFile = SystemPropertyConfigUtils.getSystemProperty(\n    CommonConstants.DubboProperty.DUBBO_RESOLVE_FILE);\nif (resolveFile != null && !resolveFile.isEmpty()) {\n    File f = new File(resolveFile);\n    if (!f.isFile() || !f.canRead()) {\n        throw new IllegalStateException(\"dubbo-resolve file not readable: \" + f.getAbsolutePath());\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    // resolveFile() is invoked internally during reference init\n    referenceConfig.get();\n} catch (IllegalStateException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"Failed to load \")) {\n        // fix permissions/path of the dubbo-resolve.properties file, then retry\n    }\n    throw e;\n}","preventionTips":["Set correct read permissions on dubbo-resolve.properties.","Point -Ddubbo.resolve.file at a regular, readable file.","Remove the resolve file if point-to-point override is not needed."],"tags":["config-file","io","resolve"],"backgroundTag":null,"analyzedSha":"3a3043227f5571d25eb2889de5bca22f2914843b","analyzedAt":"2026-08-14T00:43:19.853Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}