diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/ConfigReadFailedException.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/ConfigReadFailedException.java new file mode 100644 index 000000000..00a5ca90c --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/ConfigReadFailedException.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.agent.core.conf; + +public class ConfigReadFailedException extends Exception { + public ConfigReadFailedException(String message, Throwable parent) { + super(message, parent); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/SnifferConfigInitializer.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/SnifferConfigInitializer.java index 27e0cf934..477455b76 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/SnifferConfigInitializer.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/SnifferConfigInitializer.java @@ -22,6 +22,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.Map; import java.util.Properties; @@ -53,7 +55,7 @@ public class SnifferConfigInitializer { * At the end, `agent.application_code` and `collector.servers` must be not blank. */ public static void initialize() throws ConfigNotFoundException, AgentPackageNotFoundException { - InputStream configFileStream; + InputStreamReader configFileStream; try { configFileStream = loadConfigFromAgentFolder(); @@ -115,15 +117,17 @@ public class SnifferConfigInitializer { * * @return the config file {@link InputStream}, or null if not needEnhance. */ - private static InputStream loadConfigFromAgentFolder() throws AgentPackageNotFoundException, ConfigNotFoundException { + private static InputStreamReader loadConfigFromAgentFolder() throws AgentPackageNotFoundException, ConfigNotFoundException, ConfigReadFailedException { File configFile = new File(AgentPackagePath.getPath(), CONFIG_FILE_NAME); if (configFile.exists() && configFile.isFile()) { try { logger.info("Config file found in {}.", configFile); - return new FileInputStream(configFile); + return new InputStreamReader(new FileInputStream(configFile), "UTF-8"); } catch (FileNotFoundException e) { throw new ConfigNotFoundException("Fail to load agent.config", e); + } catch (UnsupportedEncodingException e) { + throw new ConfigReadFailedException("Fail to load agent.config", e); } } throw new ConfigNotFoundException("Fail to load agent config file.");