Интересно, что ни один из ответов на этой странице не упоминает два крайних случая, надеюсь, никто не возражает, если я их добавлю:
Родовые словари в .NET не являются потокобезопасными, а иногда могут бросать NullReference
или даже (чаще) a KeyNotFoundException
при попытке получить доступ к ключу из двух параллельных потоков. Исключение в этом случае является довольно ошибочным.
Если код NullReferenceException
задан кодом unsafe
, вы можете посмотреть на переменные указателя , и проверьте их на IntPtr.Zero
или что-то в этом роде. Это одно и то же («исключение нулевого указателя»), но в небезопасном коде переменные часто переводятся в типы значений / массивы и т. Д., И вы ударяете головой о стену, задаваясь вопросом, как тип значения может исключение.
(Еще одна причина для небезопасного использования небезопасного кода, если вам это нужно)
Являются ли они в правильных подкаталогах?
Если вы поместите /usr/share/stuff
в путь класса, файлы, определенные с помощью package org.name
, должны быть в /usr/share/stuff/org/name
.
EDIT: Если вы этого еще не знаете, вы должны, вероятно, прочитать следующее: http://download.oracle.com/javase/1.5.0/docs/tooldocs/windows/classpath.html#Understanding
EDIT 2: Извините, я не понял, что вы говорили о исходных файлах Java в /usr/share/stuff
. Они не только должны находиться в соответствующем подкаталоге, но вам необходимо их компилировать. Файлы .java
не обязательно должны находиться в пути к классам, а в исходном пути. (Сгенерированные файлы .class
должны находиться в пути к классам.)
Вы можете уйти с компиляцией, если они не находятся под правильной структурой каталогов, но они должны быть, или они будут генерировать предупреждения как минимум. Сгенерированные файлы классов будут находиться в правильных подкаталогах (везде, где вы указали -d
, если у вас есть).
Вы должны использовать что-то вроде javac -sourcepath .:/usr/share/stuff test.java
, если вы поместите файлы .java
которые были под /usr/share/stuff
под /usr/share/stuff/org/name
(или что-то подходящее в соответствии с их именами пакетов).
У меня была такая же проблема, когда вручную компилировалась через командную строку, мое решение заключалось в том, что я не включил каталог -sourcepath, так что все файлы java-файлов поддиректории тоже были бы скомпилированы!
Щелкните правой кнопкой мыши ваш проект maven в нижней части выпадающего списка Maven >> reimport
он работает для меня для недостающих зависимостей
Вы должны иметь org/name
dirs в /usr/share/stuff
и поместить ваши источники пакета org.name
в этот каталог.
У меня была эта проблема, пытаясь использовать тему, упакованную как .jar
в моем приложении, она работала при отладке приложения, но это не было при создании / экспорте приложения.
Я решил это, распакуя jar
и вручную добавив его содержимое в мою папку сборки, в результате чего:
project/
│
├── build
│ └── classes
│ ├── pt
│ │ └── myAppName ...
│ └── com
│ └── themeName ...
├── src
└── lib
У меня больше нет ошибки, и мое приложение загружается с предполагаемым тема.