Что приводит к тому, что мой автопроводной объект вызывает исключение нулевого указателя? - PullRequest
0 голосов
/ 12 мая 2019

У меня есть открытый финальный класс, который расширяет Configured и реализует Tool, который отказывается видеть переменную с автопроводкой. Этот класс передается статическому методу ToolRunner.run, и я не уверен, какое влияние я должен ожидать от этого дополнительного уровня сложности.

Я перенес логику context.getBean в отдельный класс, и автоматическое подключение работает, но вносит больше ошибок (обнуляет конфигурацию ToolRunner). Код для этого отдельного класса является точной копией кода в классе Driver и аннотируется как @Component. Почему Autowired работает для отдельного класса, но не для этого, мне неизвестно.

Вот код из класса Driver:

@Component
public final class Driver extends Configured implements Tool {
private static Driver driver = new Driver();
@Autowired
private Connection connection;

public static void main(String[] args) throws Exception{
int exitCode = ToolRunner.run(new Configuration(),driver, args);
}

@Override
public int run(String[] args) throws Exception{
AbstractApplicationContext context = new AnnotationConfigApplicationContext(HdfsConfig.class);
driver = context.getBean(Driver.class);
\\and it continues till I hit my getConnection NPE

Вот HdfsConfig.class:

@Configuration
@ComponentScan(basePackages = {"shared.folder"}
public class HdfsConfig{

@Bean
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public org.apache.hadoop.conf.Configuration configuration = new Configuration();
\\So on and so on until I return my configuration

Что я действительно хочу сделать, так это сохранить мою информацию ToolRunner и объект подключения в классе, чтобы все было заполнено и счастливо. Я подозреваю, что что-то, касающееся природы моей переменной Driver, ломает вещи, но причина в том, что мне не хватает слабого мозга.

...