code: protected Object getProperty(Token token) throws IOException {
          if (token.getDirectiveType() == TokenDirectiveType.CLASSPATH) {
              Properties props = PropertiesLoaderUtils.loadProperties(token.getValue(), activity.getEnvironment().getClassLoader());
              Object value = (token.getGetterName() != null ? props.get(token.getGetterName()) : props);
              return (value != null ? value : token.getDefaultValue());
          } else {
              Object value = activity.getActivityContext().getEnvironment().getProperty(token.getName(), activity);
              if (value != null && token.getGetterName() != null) {
                  value = getBeanProperty(value, token.getGetterName());
              }
              return (value != null ? value : token.getDefaultValue());
          }
      }
docs: Returns an Environment variable that matches the given token.
  
  <pre>
  %{classpath:/com/aspectran/sample.properties}
  %{classpath:/com/aspectran/sample.properties^propertyName:defaultValue}
  </pre>
  
  @param token the token
  @return an environment variable
  @throws IOException if an I/O error has occurred