Java util logging logger
Logger log () метод в Java с примерами
Метод log () Logger используется для регистрации сообщения. Если регистратор в настоящее время включен для данного уровня сообщения, который передается в качестве параметра, то создается соответствующий LogRecord и пересылается всем зарегистрированным объектам обработчика вывода. Но в классе logger существует семь различных методов log () в зависимости от параметров, передаваемых в метод.
- log (Level level, String msg) : этот метод используется для регистрации сообщения без аргументов. только сообщение будет записано в выходной файл журнала.
Синтаксис:
Параметры: Этот метод принимает два параметра уровня, который является одним из идентификаторов уровня сообщения, например, SEVERE и msg, который является строковым сообщением (или ключом в каталоге сообщений).
Возвращаемое значение: этот метод ничего не возвращает
Программа 1: Журнал методов (уровень уровня, строка сообщений)
// Java-программа для демонстрации
// Logger.log (Level level, String msg) метод
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// регистрируем сообщения, используя log (Level level, String msg)
logger.log(Level.INFO, «This is message 1» );
logger.log(Level.WARNING, «This is message 2» );
Выход
log (Level level, String msg, Object param1) : Этот метод используется для регистрации сообщения с одним параметром объекта.
Синтаксис:
Параметры: Этот метод принимает три параметра уровня, который является одним из идентификаторов уровня сообщения, например, SEVERE, msg, который является строковым сообщением (или ключом в каталоге сообщений), и param1, который является параметром для сообщения.
Возвращаемое значение: этот метод ничего не возвращает
Программа 2: Журнал методов (Уровень уровня, Строка msg, Объект param1)
// Java-программа для демонстрации
// Logger.log (Уровень уровня, Строка msg, Объект param1)
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// регистрируем сообщения используя
// log (Уровень уровня, Строка msg, Объект param1)
logger.log(Level.INFO, «logging: <0>» , «message1» );
logger.log(Level.SEVERE, «logging: <0>» , «message2» );
Выход:
log (Level level, String msg, Object [] params) : этот метод используется для регистрации сообщения с массивом аргументов объекта.
Синтаксис:
Параметры: Этот метод принимает три параметра уровня, который является одним из идентификаторов уровня сообщения, например, SEVERE, msg, который является строковым сообщением (или ключом в каталоге сообщений), и param1, который является массивом параметров сообщения.
Возвращаемое значение: этот метод ничего не возвращает
Программа 3: Журнал методов (уровень уровня, строковое сообщение, объект [] param1)
// Java-программа для демонстрации
// Logger.log (Level level, String msg, Object [] param1)
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// регистрируем сообщения используя
// log (Уровень уровня, Строка msg, Object [] param1)
Выход:
log (уровень уровня, строковое сообщение, Throwable Thrown ) : этот метод используется для регистрации сообщения со связанной информацией Throwable.
Синтаксис:
Параметры: Этот метод принимает три параметра уровня, который является одним из идентификаторов уровня сообщения, например, SEVERE, msg, который является строковым сообщением (или ключом в каталоге сообщений), и брошенный, который является Throwable, связанным с сообщением журнала.
Возвращаемое значение: этот метод ничего не возвращает
Программа 4: Журнал методов (уровень уровня, строковое сообщение, выброшенный бросок)
// Java-программа для демонстрации
// Logger.log (уровень уровня, строковое сообщение, бросаемый бросок)
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// регистрируем сообщения используя
// log (уровень уровня, строковое сообщение, бросаемый бросок)
new RuntimeException( «Error» ));
new Exception( «Exception» ));
Выход:
log (уровень уровня, Throwable брошенный, поставщик msgSupplier) : этот метод используется для регистрации ленивого сообщения с соответствующей информацией Throwable. Сообщение и данный Throwable затем сохраняются в LogRecord, который пересылается всем зарегистрированным обработчикам вывода.
Синтаксис:
Параметры: Этот метод принимает три уровня параметров , который является одним из идентификаторов уровня сообщения, например, Серьёзный, брошенный который является Throwable , связанный с сообщениями журнала и msgSupplier , который является функцией, которая при вызове, производит желаемое сообщение журнала.
Возвращаемое значение: этот метод ничего не возвращает
Программа 5: Журнал методов (Уровень уровня, Брошенный бросок, Поставщик msgSupplier)
// Java-программа для демонстрации
// Logger.log (Уровень уровня, Брошенный выброс, Поставщик msgSupplier)
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// Создать метод поставщика
= () -> new String( «Logger logs» );
// регистрируем сообщения используя
// log (Уровень уровня, Throwable бросил, поставщик msgSupplier)
new RuntimeException( «Error» ),
Выход:
log (уровень уровня, поставщик msgSupplier) : этот метод используется для регистрации сообщения, которое должно быть построено только в том случае, если уровень ведения журнала таков, что сообщение будет фактически зарегистрировано.
Синтаксис:
Параметры: Этот метод принимает два параметра уровня, который является одним из идентификаторов уровня сообщения, например, SEVERE и msgSupplier, который является функцией, которая при вызове создает желаемое сообщение журнала.
Возвращаемое значение: этот метод ничего не возвращает
Программа 6: Журнал методов (уровень уровня, поставщик msgSupplier)
// Java-программа для демонстрации
// Logger.log (Level level, msgSupplier)
public class GFG <
public static void main(String[] args)
GFG. class .getName());
// Создать метод поставщика
= () -> new String( «Logger messages» );
// регистрируем сообщения используя
// log (уровень уровня, поставщик msgSupplier)
Выход:
log (LogRecord record) : этот метод используется для регистрации LogRecord. Используя logRecord, мы записываем информацию на выходы регистратора.
Синтаксис:
Параметры: Этот метод принимает одну запись параметра, которая является LogRecord для публикации.
Возвращаемое значение: этот метод ничего не возвращает
Программа 7: Журнал методов (запись LogRecord)
java.util.logging Example
Posted by: Rohit Joshi in logging June 11th, 2014 1 Comment Views
In this article, we will discuss about the logging functionality in Java. Logging in simple words refers to the recording of an application activity. Logging is used to store exceptions, information, and warnings as messages that occur during the execution of a program. Logging helps a programmer in the debugging process of a program.
Java provides logging facility in the java.util.logging package. The package consists of a set of classes and interfaces which are used in logging. The System uses a Logger object to log messages.
The Logger object is allocated with a LogRecord object which stores the message to be logged. This LogRecord object is forwarded to all the handlers assigned to the Logger object. Both loggers and handlers can optionally use a Filter that is associated with them, to filter the log messages. Then, the handlers published the logged messages to the external system.
Let’s start with some of the important classes of the package.
1. Logger and Level
A Logger class is used to create a logger object which is used to log messages. A logger object is provided with a name and has a set of methods which are used to log messages at the different levels. Although you can provide any name to the logger, it is recommended to provide a name based on the package and the class name in which the logger is created.
There are seven logging levels provided by the Level class.
• SEVERE (highest level)
• WARNING
• INFO
• CONFIG
• FINE
• FINER
• FINEST (lowest level)
All these levels are present in the Level class, as a static final field. You can use any of these levels, according to the level of the message you log. Additionally, it also provides a level OFF that can be used to turn off the logging and a level ALL to turn on the logging for all the levels.
Let’s see an example about how to create and use a logger.
- If we run the above code, we will have the following results:
In the above example, we have created a logger object using the getLogger static method. Then we have logged messages at different levels. We also have thrown an ArrayIndexOutOfBoundsException to illustrate the use of the Logger .
Let’s have a look at some of the methods used in this example.
Logger.getLogger(String name) : This method is used to create or find a logger by the name passed as a parameter.
void info(String msg) : This instance method is used to log an INFO message, if the logger is currently enabled for the INFO message else the logged message is gets ignored.
void warning(String msg) : This instance method is used to log a WARNING message, if the logger is currently enabled for the WARNING message else the logged message is gets ignored.
void config(String msg) : This instance method is used to log a CONFIG message, if the logger is currently enabled for the CONFIG message else the logged message is gets ignored.
void log(Level level, String msg, Object param1) : This method is used to log a message with a given level, and with an Object as a parameter. You can use this method when you want to store an object in the log as done in the above example where we have logged an exception object at SEVERE level.
Please note that the INFO level is the default level set in the Logger . Any message logged with the level lower than the INFO gets ignored. As you can see, the message logged at the WARNING level gets ignored and it did not get published in the console.
2. Handler
A Handler is one of the components of the logging framework. It is responsible for printing the log message at a target destination. The destination can be a console or a file. The Handler is used to take a log message in the form of a LogRecord object and export it to the target destination.
A Logger can be associated with one or more handlers that eventually forward the logged message to all the handlers. A Handler is an abstract class in the java.util.logging package which is a base class for all types of handlers in Java. There are 4 types of built-in handlers in Java.
ConsoleHandler : A ConsoleHandler records all the log messages to System.err . By default, a Logger is associated with this handler.
FileHandler : A FileHandler is used to record all the log messages to a specific file or to a rotating set of files.
StreamHandler : A StreamHandler publishes all the log messages to an OutputStream .
SocketHandler : The SocketHandler publish the LogRecords to a network stream connection.
MemoryHandler : It is used to keep the LogRecords into a memory buffer. If the buffer gets full, the new LogRecords starts overwriting the old LogRecords .
- If we run the above code, we will have the following results:
This example also generates a log file javacodegeeks.log at the root directory of this project.
Log generated by a handler
The file contains the following log.
In this example, we have logged messages to both the FileHandler and the ConsoleHandler . Let’s discuss the above example.
ConsoleHandler() : A constructor that creates a ConsoleHandler for System.err .
FileHandler(String pattern) : A constructor that creates a FileHandler to log messages in the given file name.
void addHandler(Handler handler) : It’s an instance method from the Logger class which is used to assign a handler to the logger object. You can assign multiple handlers to a single logger object. Like in this example, we have assigned both ConsoleHandler and FileHandler to a single logger object.
void setLevel(Level newLevel) : This method is from the Logger and the Handler class. It sets the log level specifying which message levels will be logged by this logger. Message levels lower than the level set will be ignored.
void removeHandler(Handler handler) : It is used to remove the associated handler from the logger object. Once the handler is removed, it will not be able to publish any further logs. In this example, we removed the ConsoleHandler and all messages following it did not get published in the console.
void finer(String msg) : This instance method is used to log a FINER message, if the logger is currently enabled for the FINER message else the logged message gets ignored.
The log messages published by the FileHandler in the above example are in the XML format. It’s the default format of the FileHandler . We can change the format of the handler using a Formatter . In the next section, we will discuss about the Formatter class and its uses.
3. Formatter
A Formatter is used to format a LogRecord . Each handler is associated with a formatter. Java provides the Formatter as a parent class of two in-built formatter’s i.e. SimpleFormatter and XMLFormatter . Let’s see some examples:
- If we run the above code, we will have the following results:
This example also generates a log file javacodegeeks.formatter.log in the root directory of this project.
Log generated by Formatter Example
In the above example, we have used the SimpleFormatter in our example, which prints the LogRecord in a simple human readable format. Please note that before setting the SimpleFormatter to the handler, we have logged a message which is published in an XML format, this is because the XMLFormatter is the default formatter for the FileHandler . Also note that the LogRecord is also published in the console because the ConsoleHandler is by default associated with the Logger .
SimpleFormatter() : This constructor is used to create a SimpleFormatter object.
void setFormatter(Formatter newFormatter) : This method is from the Handler class and used to set the formatter to the handler.
4. Filter
A Filter is an interface in java.util.logging package. It is used to control the messages to be logged by the handler. Every Logger and Handler optionally can have a Filter . The Filter has a isLoggable method which returns a boolean . Before publishing the message the Logger or the Handler calls this method, if the method returns true the LogRecord gets publish else it gets ignored.
- If we run the above code, we will have the following results:
void setFilter(Filter newFilter) : This method sets a Filter which controls the output on this Logger .
boolean isLoggable(LogRecord record) : This method is from the Filter interface which checks if a given LogRecord object should be published or not.
5. Configuration
You can provide configuration properties to a Logger using a configuration file. This helps you to remove the configuration from the code and provides an easy way to re-configure whenever it is required without changing the code again and again. This flexibility is provided by the LogManager class.
This example reads a property file which contains the following properties:
- If we run the above code, we will have the following results:
Let’s us discuss about the code and the configuration properties.
handlers: used to set the default handlers for all the loggers.
.level: sets the default Level for all the loggers to ALL.
java.util.logging.ConsoleHandler.level: sets the default Level for all the ConsoleHandler to ALL.
java.util.logging.ConsoleHandler.formatter: sets the default formatter for the ConsoleHandler to a SimpleFormatter .
confLogger.level: sets the default level of the Logger named confLogger to ALL.
Please note that you can override these properties in the code.
Java logging. Hello World
Вступление
Думаю, ни для кого не секрет, что такое логгеры и для чего они нужны. За время существования java было создано немало фреймворков логгирования. Среди самых известных можно выделить:
- JUL — java.util.logging
- log4j
- JCL — jakarta commons logging
- Logback
- SLF4J — simple logging facade for java
В данной статье будет рассмотрен каждый из указанных выше фреймворков на уровне «hello world». Будут приведены простые примеры использования основного функционала и конфигурирования. Статья не преследует цель сравнения логгеров между собой и выявление лучшего из них, эту возможность автор оставляет за вами, уважаемые читатели. В конце статьи будут приведены источники, где можно получить более детальную информацию по каждому фреймворку. Также перед прочтением данной статьи рекомендую ознакомиться с публикацией «Java Logging: история кошмара», где описана история развития систем логгирования в Java.
System.err.println
Первым и самым примитивным способом логгирования был метод System.err.println. Думаю, комментарии излишние, достаточно взглянуть на приведенный ниже код:
Java.util.logging
Данный фреймворк включен в стандарт и поставляется вместе с JDK, поэтому ничего дополнительно скачивать и подключать вам не надо. JUL имеет следующие уровни логгирования по возрастанию: FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE, а так же ALL и OFF, включающий и отключающий все уровни соответственно.
Логгер создается вызовом одного из статических методов класса java.util.logging.Logger:
Методы логгера могут принимать в качестве аргументов строковые сообщения, шаблоны сообщений, исключения, ресурсы локализованных текстовок сообщений, а также, начиная с Java 8, поставщиков строковых сообщений:
Выделяется две группы методов: название которых соответствует уровню логгирования и методы log, loggp, logrb, принимающие уровень логгирования в качестве параметра с типом Level. Первая группа содержит методы двух типов: принимающих строковое сообщение или поставщика строковых сообщений:
Вторая группа методов имеет следующие вариации:
Теперь обратимся к конфигурации фреймворка. По умолчанию JUL будет выводить сообщения на консоль, однако можно задать конфигурацию в файле свойств. Для задания способа вывода сообщений необходимо для вашего логгера указать какие хендлеры он будет использовать. Существует следующие классы хендлеров: FileHandler, ConsoleHandler, StreamHandler, SocketHandler, MemoryHandler. Особенностью JUL является то, что настройки хендлеров задаются в целом для всего класса, а не для конкретного экземпляра, что может порождать не мало проблем, например если вам потребуется сообщения различных логгеров выводить в различные файлы или с различным форматированием. Рассмотрим простой пример конфигурационного файла:
Для того что бы JUL применил данную конфигурацию нужно передать параметр -Djava.util.logging.config.file = , либо при старте приложения выполнить код:
Log4j
Данный фреймворк на текущий момент имеет уже вторую версию, которая увы не совместима с первой. Поскольку первая версия log4j существует достаточно давно и, в виду ее большой популярности, существует не мало статей на просторах интернета, сегодня мы рассмотрим вторую. Для использования log4j2 вам необходимо подключить библиотеки log4j-api-2.x и log4j-core-2.x. Log4j имеет несколько отличное от JUL именование уровней логгирования: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, а так же ALL и OFF включающий и отключающий все уровни соответственно.
Логгер создается вызовом статического метода класса org.apache.logging.log4j.Logger:
Логгер умеет принимать помимо привычных нам String, Object и Throwable еще два новых типа — MapMessage и Marker:
В классическом для логгеров стиле методы делятся на два типа: совпадающие с названием уровня логгирования и методы log, принимающие уровень логгирования в качестве параметра. Первые имеют вид:
Методы log в log4j2 выглядят так:
Если не определить конфигурацию, то при запуске log4j2 выдаст гневное сообщение, о том, что конфигурация не задана и будет печатать ваши сообщения на консоль уровнем не ниже ERROR. Конфигурация log4j2 задается несколькими вариантами: xml, json, yaml. Стоит отметить, что со второй версии нет поддержки конфигурации из property файла. Файл с конфигурацией автоматически ищется classpath, должен иметь название log4j2 и располагаться в пакете по умолчанию.
Конфигурация log4j2 состоит из описания логгеров, аппендеров и фильтров. Для более детального изучения обратитесь к документации, сейчас же лишь отметим пару ключевых моментов. Во-первых, есть различные вкусности в виде фильтров, в том числе и по маркерам:
- BurstFilter
- CompositeFilter
- DynamicThresholdFilter
- MapFilter
- MarkerFilter
- RegexFilter
- StructuredDataFilter
- ThreadContextMapFilter
- ThresholdFilter
- TimeFilter
Во-вторых, имеется широкий круг классов аппендеров, в том числе асинхронные аппендеры и аппендеры оборачивающие группу других аппендеров:
- AsyncAppender
- ConsoleAppender
- FailoverAppender
- FileAppender
- FlumeAppender
- JDBCAppender
- JMSAppender
- JPAAppender
- MemoryMappedFileAppender
- NoSQLAppender
- OutputStreamAppender
- RandomAccessFileAppender
- RewriteAppender
- RollingFileAppender
- RollingRandomAccessFileAppender
- RoutingAppender
- SMTPAppender
- SocketAppender
- SyslogAppender
Стоит также заметить, что log4j может создавать множество различающихся аппендеров одного и того же класса, например несколько файловых аппендеров, которые пишут в разные файлы.
Рассмотрим пример конфигурации, в которой объявлены два логгера (корневой и для нашего класса), первый из которых пишет в файл log.log, а второй пишет в log2.log с использованием фильтрации по маркеру:
Commons-logging
Довольно старый проект, который представляет собой обертку над JUL и log4j, не привносящая никакого дополнительного функционала. Уровни логгирования у JCL совпадают с log4j, а в случае взаимодействия с JUL происходит следующее сопоставление:
Для использования JCL подключаем commons-logging-1.x.jar. Создаем логгер вызовом метода фабрики:
Методы JCL очень простые, совпадают с названием уровней логгирования, принимают только объекты и исключения и имеют две вариации:
Конфигурация JCL содержит отдельные блоки для log4j, JUL и собственной реализации. Если не задать конфигурацию, то используется собственная реализация, именуемая SimpleLog, которая выводит сообщения на консоль. Рассмотрим пример конфигурационного файла:
Указать файл конфигурации JCL можно следующим образом:
Logback
Данный фреймворк используется только в связке с оберткой SLF4J, которую мы будем рассматривать позднее. Для начала работы вам необходимы logback-core-1.x.jar и logback-classic-1.x.x.jar, а также slf4j-api-1.x.x.jar.
Взаимодействие с логгером мы будем осуществлять через API предоставляемый оберткой SLF4J. Уровни логгирования совпадают с log4j. Создание логгера в таком случае выглядит следующим образом:
API позволяет выводить строковые сообщения, шаблоны строковых сообщений, исключения, а также использовать маркеры:
Названия методов совпадают с уровнями логгирования и имеют вид:
Теперь рассмотрим непосредственны функционал logback. Конфигурация ищется в classpath в следующем порядке:
- Пытается найти logback.groovy
- Иначе пытается найти logback-test.xml
- Иначе пытается найти logback.xml
- Иначе использует базовую конфигурацию — выводим сообщения на консоль
Основными элементами конфигурации являются логгеры, аппендеры, лайауты, и фильтры.
Имеются следующие фильтры:
- Regular filters
- LevelFilter
- ThresholdFilter
- EvaluatorFilter
- Matchers
- TurboFilters
- CountingFilter
Имеются следующие аппендеры:
- OutputStreamAppender
- ConsoleAppender
- FileAppender
- RollingFileAppender
- SocketAppender and SSLSocketAppender
- ServerSocketAppender and SSLServerSocketAppender
- SMTPAppender
- SyslogAppender
- SiftingAppender
- AsyncAppender
О том что такое Layouts и Encoders в logback предлагаю прочитать подробно в документации, а сейчас лишь приведу простой пример файла logback.xml:
SLF4J
Как уже говорилось ранее SLF4J является оберткой над logback, а также над JUL, log4j, или JCL, а также над любым логгером, который реализует ее интерфейс. Для работы с SLF4J нужны библиотека slf4j-api-1.x.x.jar и реализация одного из логгеров либо заглушка. Как правило реализации всех логгеров ( кроме logback) поставляются вместе с SLF4J и имеют названия на подобии slf4j-jcl-1.x.jar, slf4j-log4j12-1.x.jar, slf4j-nop-1.x.jar и т.п. Если в classpath не будет найдена реализация логгера ( или заглушка nop) SLF4J гневно ругнется и работать откажется. Конфигурация соответственно будет искаться в зависимости от положенной в classpath реализации.
API SLF4J мы рассмотрели в предыдущем пункте, поэтому давайте рассмотрим еще одну возможность обертки. В идеальном мире мы должны выводить сообщения через интерфейс обертки, и тогда у нас все будет хорошо, но реальный жестокий мир говорит о том, что всем нам приходится взаимодействовать со сторонними библиотеками или кодом, в которых используются другие логгеры и которые знать не знают о SLF4J. Что бы не подстраиваться под каждый логгер, а пустить все сообщения через одну реализацию интерфейса SLF4J, можно использовать bridging. В поставке обертки содержаться библиотеки jcl-over-slf4j.jar, log4j-over-slf4j.jar и jul-to-slf4j.jar, которые переопределяют поведение соответствующих логгеров и перенаправляют сообщения в обертку.
Что бы стало понятнее выше сказанное, рассмотрим пример. Допустим у нас имеются следующие логгеры:
Мы хотим, что бы сообщение от JUL записывались в один файл, от log4j в другой, а от slf4j выводились на консоль. В качестве реализации обертки будем использовать logback, конфигурация сего безобразия будет выглядеть следующим образом:
Для того, что бы мост заработал необходимо выполнить код:
Java Code Examples for java.util.logging.Logger
The following code examples are extracted from open source projects. You can click to vote up the examples that are useful to you.
From project capedwarf-blue , under directory /cluster-tests/src/test/java/org/jboss/test/capedwarf/cluster/ .
From project AdminCmd , under directory /src/main/java/be/Balor/bukkit/AdminCmd/ .
From project Amoeba-for-Aladdin , under directory /src/java/com/meidusa/amoeba/aladdin/test/ .
From project autopsy , under directory /KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ .
From project aws-toolkit-for-eclipse , under directory /com.amazonaws.eclipse.core/src/com/amazonaws/eclipse/core/ui/ .
From project BeeQueue , under directory /src/org/beequeue/util/ .
From project ceres , under directory /ceres-core/src/main/java/com/bc/ceres/core/runtime/internal/ .
From project activiti-webapp-rest-generic , under directory /activiti-webapp-rest/src/main/java/org/activiti/rest/api/task/ .
From project AdServing , under directory /modules/utilities/utils/src/main/java/net/mad/ads/base/utils/utils/logging/ .
From project AeminiumRuntime , under directory /src/aeminium/runtime/tests/ .
From project AmDroid , under directory /httpclientandroidlib/src/ch/boye/httpclientandroidlib/conn/ssl/ .
From project AntiCheat , under directory /src/main/java/net/h31ix/anticheat/manage/ .
From project apjp , under directory /APJP_REMOTE_JAVA/src/main/java/APJP/HTTP/ .
From project archive-commons , under directory /archive-commons/src/main/java/org/archive/hadoop/ .
From project AuthDB , under directory /src/main/java/com/authdb/ .
From project AuthMe-Reloaded , under directory /src/main/java/uk/org/whoami/authme/settings/ .
From project aws-tvm-anonymous , under directory /src/com/amazonaws/tvm/ .
From project aws-tvm-identity , under directory /src/com/amazonaws/tvm/ .
From project b3log-latke , under directory /latke/src/main/java/org/b3log/latke/mail/local/ .
From project backup-plugin , under directory /src/main/java/org/jvnet/hudson/plugins/backup/utils/compress/ .
From project Baseform-Epanet-Java-Library , under directory /src/org/addition/epanet/hydraulic/ .
From project beam-meris-icol , under directory /src/main/java/org/esa/beam/meris/icol/utils/ .
From project beam-third-party , under directory /beam-meris-veg/src/main/java/org/esa/beam/processor/baer/algorithm/ .
From project BetterShop_1 , under directory /src/me/jascotty2/lib/bukkit/ .
From project BG7 , under directory /src/com/era7/bioinfo/annotation/gb/ .
From project BlameSubversion-plugin , under directory /src/main/java/hudson/scm/ .
From project blog_1 , under directory /snippets/ .
From project BMach , under directory /src/jsyntaxpane/actions/ .
From project Bukkit-Plugin-Utilties , under directory /src/main/java/de/xzise/ .
From project Calendar-Application , under directory /calendar/ .
From project capedwarf-green , under directory /connect/src/main/java/org/jboss/capedwarf/connect/server/ .
From project CDKHashFingerPrint , under directory /src/benchmark/helper/ .
From project ceylon-runtime , under directory /api/src/main/java/ceylon/modules/api/runtime/ .
From project charts4j , under directory /src/test/java/com/googlecode/charts4j/ .