Программное обеспечение билета бесплатной поддержки [закрывается]

Что такое NullPointerException?

Хорошим местом для начала является JavaDocs . Они охватывают это:

Брошено, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение поля нулевого объекта.
  • Выполнение длины null, как если бы это был массив.
  • Доступ или изменение слотов с нулевым значением, как если бы это был массив.
  • Бросать нуль, как если бы это было значение Throwable.

Приложения должны бросать экземпляры этого класса для указания других незаконных видов использования нулевого объекта.

blockquote>

Также, если вы попытаетесь использовать нулевую ссылку с synchronized, который также выдаст это исключение, за JLS :

SynchronizedStatement:
    synchronized ( Expression ) Block
  • В противном случае, если значение выражения равно null, NullPointerException.
blockquote>

Как это исправить?

Итак, у вас есть NullPointerException. Как вы это исправите? Возьмем простой пример, который выдает NullPointerException:

public class Printer {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print();
    }
}

Идентифицирует нулевые значения

. Первый шаг - точно определить , значения которого вызывают исключение . Для этого нам нужно выполнить некоторую отладку. Важно научиться читать stacktrace . Это покажет вам, где было выбрано исключение:

Exception in thread "main" java.lang.NullPointerException
    at Printer.printString(Printer.java:13)
    at Printer.print(Printer.java:9)
    at Printer.main(Printer.java:19)

Здесь мы видим, что исключение выбрано в строке 13 (в методе printString). Посмотрите на строку и проверьте, какие значения равны нулю, добавив протоколирующие операторы или используя отладчик . Мы обнаруживаем, что s имеет значение null, а вызов метода length на него вызывает исключение. Мы видим, что программа перестает бросать исключение, когда s.length() удаляется из метода.

Трассировка, где эти значения взяты из

Затем проверьте, откуда это значение. Следуя вызовам метода, мы видим, что s передается с printString(name) в методе print(), а this.name - null.

Трассировка, где эти значения должны быть установлены

Где установлен this.name? В методе setName(String). С некоторой дополнительной отладкой мы видим, что этот метод вообще не вызывается. Если этот метод был вызван, обязательно проверьте порядок , что эти методы вызывают, а метод set не будет называться после методом печати. ​​

Этого достаточно, чтобы дать нам решение: добавить вызов printer.setName() перед вызовом printer.print().

Другие исправления

Переменная может иметь значение по умолчанию setName может помешать ему установить значение null):

private String name = "";

Либо метод print, либо printString может проверить значение null например:

printString((name == null) ? "" : name);

Или вы можете создать класс, чтобы name всегда имел ненулевое значение :

public class Printer {
    private final String name;

    public Printer(String name) {
        this.name = Objects.requireNonNull(name);
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer("123");
        printer.print();
    }
}

См. также:

Я все еще не могу найти проблему

Если вы попытались отладить проблему и до сих пор не имеете решения, вы можете отправить вопрос для получения дополнительной справки, но не забудьте включить то, что вы пробовали до сих пор. Как минимум, включите stacktrace в вопрос и отметьте важные номера строк в коде. Также попробуйте сначала упростить код (см. SSCCE ).

16
задан pnuts 1 January 2015 в 00:16
поделиться

11 ответов

Я изучил это вполне немного, и здесь являюсь некоторыми наилучшими вариантами, которые я нашел. Для ссылки моим выбором был HelpSpot для в целом, но SupportTrio имеет превосходное предложение, и существует абсолютно бесплатная версия (ограниченное количество пользователей).

Бесплатное программное обеспечение

SupportTrio (бесплатные или заплаченные доступные версии)

  • Демонстрация здесь
  • Хороший веб-интерфейс
  • База знаний включала
  • прямая электронная почта к связи по электронной почте, достойному интерфейсу, бесплатная версия, доступная
  • Хорошие отчеты, доступные, если управленческие отчеты желаемы (см. демонстрацию)
  • вещи Пары, которые я не любил в интерфейсе, например, никаком способе развернуть всю корреспонденцию билета для чтения всех, что может быть печальным.
  • страницы Encoded PHP; не может быть изменен, чтобы включать или изменить функции при желании
  • , Поддержка кажется достаточно достойной, с регулярными выпусками (проверьте их форум, и Вы видите отправленные выпуски), но они выпускают обновления как отдельные файлы, которые должны быть заменены, который не оптимален.

Средство отслеживания Запроса (иначе. RT)

  • Давнишняя история как основательный проект
  • с открытым исходным кодом много функций и гибкости, вдвойне поэтому, так как источник открыт. Всесторонний API обеспечивает возможности изменить и расшириться.
  • коммуникация Прямой рассылки и обработка билета могут быть майором плюс для маленького orgs.
  • Доступный как пакеты для большинства дистрибутивов Linux
  • Документация является диапазонами от посредственного до очень плохого для определенных тем, может быть трудной дешифровать
  • веб-интерфейс, не очень привлекательный по сравнению с другими опциями, и не использует в своих интересах динамический JavaScript и т.д. для более гладкого опыта веб-приложения.

Paid Software

набор функций Тела HelpSpot

  • , все в одном хорошем пакете с хорошей поддержкой
  • связь по электронной почте, доступная
  • Простой веб-интерфейс, максимально ненарушенный при тихом поддержании функций
  • хорошие инструменты создания отчетов
  • гибкий интерфейс и фильтры
  • API, доступный для расширения и интеграции с другими системами
  • "Книжная документация" знаний, встроенная
  • динамический веб-интерфейс с хорошим использованием JavaScript для создания его более гладким для использования
  • , закодированные страницы предотвращают обновление или изменение страниц самостоятельно

Демонстрация Kayako eSupport

  • здесь
  • Очень гладкий интерфейс
  • партии функций, очень обширных
  • версия Windows Mobile, живой чат, другие подобные инструменты, доступные
  • стиль форума Использования для сообщений/ответов, который является про или обманным на основе предпочтения;)
  • страницы кодируются для предотвращения обновления/изменения себя
  • , о поддержке этого продукта сообщают как являющийся очень плохим, включая пользователей, которые даже не получили лицензию после оплаты продукта - это было достаточно для нас для избегания этого продукта.

Hope, которая помогает!

23
ответ дан 30 November 2019 в 15:35
поделиться
11
ответ дан 30 November 2019 в 15:35
поделиться

Вы попробовали эти , Открывают Ticket Request System ?

Это обеспечивает

  • пользовательское представление очереди и представление очереди всех запросов
  • Билет, блокирующий
  • ответы Билета (стандартные ответы)
  • автореспонденты Билета на очередь
  • история Билета, эволюция состояния билета и действия, взятые билет
  • abaility для добавления примечаний (с различными типами примечания) к билету
  • функция масштабирования Билета
  • , Билеты могут быть возвращены или переданы другим адресам электронной почты
  • , Билет может быть перемещен к различной очереди (это полезно, если электронные письма для определенного предмета)
  • приоритет Билета
  • время Билета, считающее
  • представление печати Билета (PDF)
  • Билет незаконченная функция
  • Билет ответственная функция
  • функция объема Билета
  • делитель рычага Билета
  • уровень
  • модуля события Ticket Универсальный агент, чтобы сделать автоматически действия с билетами (на основе запланированных заданий)
  • полнотекстовый поиск содержания
  • поддержка ACL Билета
  • функция рабочего процесса Билета

РЕДАКТИРОВАНИЕ: @Thomasschaaf, просто видел Ваше редактирование: Тогда OTRS не мог бы соответствовать 100% Ваши потребности. Это имеет действительно много функций. Но возможно можно ли дать немного больше информации что не так с электронным билетом?

7
ответ дан 30 November 2019 в 15:35
поделиться

На работе мы используем Средство отслеживания Запроса , и у меня есть почти только хороший опыт с использованием его. Это записано в Perl и легкое настроить с Apache/Lighttpd (единственные веб-серверы, я попробовал его). Его легкое для интеграции с электронной почтой и использования локальных перенаправлений электронной почты и внешних/локальных почтовых серверов POP.

Его довольно легкое, чтобы установить и использовать, и его не в Вашей поверхности, когда Ваше использование его на ежедневной основе. Но это также легко hackable.

6
ответ дан 30 November 2019 в 15:35
поделиться

Когда osTicket перемещаются в программное обеспечение уместности, группа стороны взяла последнюю из версий с открытым исходным кодом, и теперь продолжите его под именем aTicket.

Они делают очень хорошее задание, и именно все функции osTicket имели, прежде чем они обратились к темной стороне. Я использую электронный билет для всех своих веб-запросов в службу поддержки хоста, и я не испытал затруднений из-за него.

3
ответ дан 30 November 2019 в 15:35
поделиться

OTRS основан на Perl, хорошо поддерживается. RT стар. Bugzilla очень мощен. Trac также билеты включений, но вероятно не усовершенствованный достаточно для того, что Вы хотите.

Видят эта категория WP для больше

, Вы, вероятно, хотите быть более конкретными в своем запросе.

1
ответ дан 30 November 2019 в 15:35
поделиться

Близнецы очень легко установить и использовать. Это свободно для 5 пользователей.

1
ответ дан 30 November 2019 в 15:35
поделиться
0
ответ дан 30 November 2019 в 15:35
поделиться

Вот хорошее сравнение различных систем в Википедии:

http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems

0
ответ дан 30 November 2019 в 15:35
поделиться

Другое бесплатное и простое решение совместно использовало бы учетную запись IMAP. Большинство MUAs (Почтовый агент пользователя, такой как Outlook, Thunderbird...) поддерживает потоки, таким образом, Вы могли даже сделать, чтобы они организовали ответы и т.д. В некотором роде. Преимущество IMAP состояло бы в том, что несколько человек могли совместно использовать его, и он будет синхронизировать ответы, и т.д. без дополнительного необходимого программного обеспечения, но MUA.

Или если Вы используете Google Apps For Your Domain , тогда я предполагаю, что это сделано на их вкладках разговора, и т.д. (при использовании веб-почты).

Другое решение могло бы быть FogBugz или учетная запись lighthouseapp. Они являются свободными (например, FogBugz максимум для двух человек) и вообще безболезненными, потому что они размещаются, и т.д. и можно сконцентрироваться на электронной почте. Они оба позволяют Вам автосоздавать случаи/билеты из входящей электронной почты.

0
ответ дан 30 November 2019 в 15:35
поделиться

Что Вам не нравится [приблизительно 110] http://stackoverflow.uservoice.com/ ? Как насчет http://getsatisfaction.com/ редактирование Видит http://www.37signals.com/svn/posts/1650-get-satisfaction-or-else для деталей способа, которым они занимаются бизнесом - не симпатичный. / редактирование

Для саморазмещенного, я Средство отслеживания Ошибки Богомола вентилятор. Страница Wikipedia, уже упомянутая, является хорошей начальной точкой.

0
ответ дан 30 November 2019 в 15:35
поделиться