So I have a really weird error. Whenever I include this part of my javadoc
/**
* Maps a get request that gets the SSE stream with the given UUID
*
* @param id UUID of SSE stream to get
* @return SSE stream for the given UUID
*/
@GetMapping("/stream/{id}")
public SseEmitter streamSseMvc(@PathVariable UUID id)
(Which I know is bad Javadoc but that is besides the point for now.)
My doxygen crashes using this command: doxygen -d extcmd .\doxygen.txt
after generating all the inheritance and collaboration graphs with this error message:
Running dot for graph 22/22
Patching output file 1/15
Patching output file 2/15
Patching output file 3/15
Patching output file 4/15
error: problem writing FIG 1 figure!
lookup cache used 342/65536 hits=1089 misses=535
finished...
The only thing that fixes this error is removing either the entire file in which this JavaDoc occurs or just removing that Javadoc part. I have not yet been able to narrow it down further as the error occurs with either of the three parts of the javadoc but not with an empty javadoc body. I also don't encounter this error with this Javadoc in a different file:
/**
* Maps a get request for getting a sensors metadata by UUID.
*
* @param id UUID of sensor to get
* @return sensor with given UUID, if present
*/
@GetMapping("/{id}")
public Sensor getSensor(@PathVariable UUID id)
One more weird thing is that while the Error shows up in my Powershell when I try to output it to a file this is the result:
Doxygen version used: 1.9.1 (ef9b20ac7f8a8621fcfc299f8bd0b80422390f4b)
Searching for include files...
Searching for example files...
Searching for images...
Searching for dot files...
Searching for msc files...
Searching for dia files...
Searching for files to exclude
Searching INPUT for files to process...
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/controllers
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/exceptions
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/models
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/out
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/repository
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services
Searching for files in directory C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/util
Reading and parsing tag files
Parsing files
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/BackendApplication.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/BackendApplication.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/RESTConfiguration.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/RESTConfiguration.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebConfig.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebConfig.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebInitializer.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebInitializer.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebSecurityConfig.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/configs/WebSecurityConfig.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/controllers/ObservationController.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/controllers/ObservationController.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/controllers/SensorController.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/controllers/SensorController.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/exceptions/ExceptionController.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/exceptions/ExceptionController.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/exceptions/SensorNotFoundException.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/exceptions/SensorNotFoundException.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/models/Observation.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/models/Observation.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/models/Sensor.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/models/Sensor.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/repository/ObservationRepository.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/repository/ObservationRepository.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/repository/SensorRepository.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/repository/SensorRepository.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/ObservationService.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/ObservationService.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/ObservationServiceImp.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/ObservationServiceImp.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/SensorService.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/SensorService.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/SensorServiceImp.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/services/SensorServiceImp.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/util/HouseKeeper.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/util/HouseKeeper.java...
Reading C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/util/JsonSerializer.java...
Parsing file C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/main/java/edu/teco/sensordatenbankmanagementsystem/util/JsonSerializer.java...
Building macro definition list...
Building group list...
Building directory list...
Building namespace list...
Building file list...
Building class list...
Computing nesting relations for classes...
Associating documentation with classes...
Building example list...
Searching for enumerations...
Searching for documented typedefs...
Searching for members imported via using declarations...
Searching for included using directives...
Searching for documented variables...
Building interface member list...
Building member list...
Searching for friends...
Searching for documented defines...
Computing class inheritance relations...
Computing class usage relations...
Flushing cached template relations that have become invalid...
Computing class relations...
Add enum values to enums...
Searching for member function documentation...
Creating members for template instances...
Building page list...
Search for main page...
Computing page relations...
Determining the scope of groups...
Sorting lists...
Determining which enums are documented
Computing member relations...
Building full member lists recursively...
Adding members to member groups.
Computing member references...
Inheriting documentation...
Generating disk names...
Adding source references...
Adding xrefitems...
Sorting member lists...
Setting anonymous enum type...
Computing dependencies between directories...
Generating citations page...
Counting members...
Counting data structures...
Resolving user defined references...
Finding anchors and sections in the documentation...
Transferring function references...
Combining using relations...
Adding members to index pages...
Correcting members for VHDL...
Computing tooltip texts...
Generating style sheet...
Generating search indices...
Generating example documentation...
Generating file sources...
Parsing code for file BackendApplication.java...
Parsing code for file configs/RESTConfiguration.java...
Parsing code for file configs/WebConfig.java...
Parsing code for file configs/WebInitializer.java...
Parsing code for file configs/WebSecurityConfig.java...
Parsing code for file controllers/ObservationController.java...
Parsing code for file controllers/SensorController.java...
Parsing code for file exceptions/ExceptionController.java...
Parsing code for file exceptions/SensorNotFoundException.java...
Parsing code for file models/Observation.java...
Parsing code for file models/Sensor.java...
Parsing code for file repository/ObservationRepository.java...
Parsing code for file repository/SensorRepository.java...
Parsing code for file services/ObservationService.java...
Parsing code for file services/ObservationServiceImp.java...
Parsing code for file services/SensorService.java...
Parsing code for file services/SensorServiceImp.java...
Parsing code for file util/HouseKeeper.java...
Parsing code for file util/JsonSerializer.java...
Generating file documentation...
Generating page documentation...
Generating group documentation...
Generating class documentation...
Generating docs for compound RuntimeException...
Generating namespace index...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::BackendApplication...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::configs::RESTConfiguration...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::configs::WebConfig...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::configs::WebInitializer...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::controllers::ObservationController...
Generating call graph for function edu.teco.sensordatenbankmanagementsystem.controllers.ObservationController.streamSseMvc
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::controllers::SensorController...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::exceptions::ExceptionController...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::exceptions::SensorNotFoundException...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::models::Observation...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::models::Sensor...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::repository::ObservationRepository...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::repository::SensorRepository...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::services::ObservationService...
Generating caller graph for function edu.teco.sensordatenbankmanagementsystem.services.ObservationService.getDataStream
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::services::ObservationServiceImp...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::services::SensorService...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::services::SensorServiceImp...
Generating docs for compound edu::teco::sensordatenbankmanagementsystem::util::HouseKeeper...
Generating graph info page...
Generating directory documentation...
Generating index page...
Generating page index...
Generating module index...
Generating namespace member index...
Generating annotated compound index...
Generating alphabetical compound index...
Generating hierarchical class index...
Generating graphical class hierarchy...
Generating member index...
Generating file index...
Generating file member index...
Generating example index...
finalizing index lists...
writing tag file...
Running plantuml with JAVA...
Running dot...
#REMOVED BECAUSE OF CHARACTER LIMIT
Running dot for graph 22/22
Patching output file 1/15
Patching output file 2/15
Patching output file 3/15
Patching output file 4/15
lookup cache used 342/65536 hits=1089 misses=535
finished...
As you can see the Error does not show up for some weird reason, but it does show up in my Powershell. I don't know if thats useful information but I thought I would include it.
edit: The Content of my Doxygen config file is as follows(I removed comments):
warning: Tag 'TCL_SUBST' at line 237 of file '.\doxygen.txt' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 997 of file '.\doxygen.txt' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'PERL_PATH' at line 2015 of file '.\doxygen.txt' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'MSCGEN_PATH' at line 2037 of file '.\doxygen.txt' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
# Difference with default Doxyfile 1.9.1 (ef9b20ac7f8a8621fcfc299f8bd0b80422390f4b)
PROJECT_NAME = "Sensor Ultra-lightweight Supervision:Active Meteorological ObservationGeneral Use System"
OUTPUT_DIRECTORY = out
ABBREVIATE_BRIEF =
STRIP_FROM_PATH = C:\Users\Surface\IdeaProjects\KIT-PSE_Sensordatenbankmanagementsystem\Backend\src\main\java\edu\teco\sensordatenbankmanagementsystem
STRIP_FROM_INC_PATH = C:\Users\Surface\IdeaProjects\KIT-PSE_Sensordatenbankmanagementsystem\Backend\src\main\java\edu\teco\sensordatenbankmanagementsystem
TAB_SIZE = 2
OPTIMIZE_OUTPUT_FOR_C = YES
BUILTIN_STL_SUPPORT = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_ANON_NSPACES = YES
HIDE_SCOPE_NAMES = YES
SHOW_USED_FILES = NO
SHOW_NAMESPACES = NO
FILE_PATTERNS =
RECURSIVE = YES
EXAMPLE_PATTERNS =
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
VERBATIM_HEADERS = NO
IGNORE_PREFIX = edu/teco/sensordatenbankmanagementsystem
HTML_TIMESTAMP = YES
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
LATEX_CMD_NAME = latex
COMPACT_LATEX = YES
MACRO_EXPANSION = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
DOT_IMAGE_FORMAT = jpg
INTERACTIVE_SVG = YES
So I tried creating an MWE and found my problem to be in another file:
public interface ObservationService {
/**
* This will return a previously created Datastream from its specified UUID.
* If there is no DataStream under the given UUID, none will be created
* @param id The UUID of the Datastream
*/
SseEmitter getDataStream(UUID id);
}
public class StackOverflowTest {
ObservationService observationService;
/**
* Maps a get request that gets the SSE stream with the given UUID
*
* @param id UUID of SSE stream to get
* @return SSE stream for the given UUID
*/
@GetMapping("/stream/{id}")
public SseEmitter streamSseMvc(@PathVariable UUID id) {
return observationService.getDataStream(id);
}
}
As soon as I (again) remove either part of the Javadoc in the Interface or the class I get no errors.
After some discussion the root cause of the problem is the path used, this results in a very long filename for the dotfile to be generated and in the like warning:
C:/Users/Surface/IdeaProjects/KIT-PSE_Sensordatenbankmanagementsystem/Backend/src/test/java/edu/teco/sensordatenbankmanagementsystem/out/html/interfaceedu_1_1teco_1_1sensoordatenbankmanagementsystem_1_1_observation_service_a93e02c2aaa18cd15de76e8b5f8313e4a_icgraph.dot
this name is 267 characters long and this might be a bit too long for some file systems.
Some relief can be given by means of setting the doxygen setting:
SHORT_NAMES=YES
The documentation (see: https://www.doxygen.nl/manual/config.html#cfg_short_names) says:
SHORT_NAMES
If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but less readable) file names. This can be useful is your file systems doesn't support long names like on DOS, Mac, or CD-ROM.
The default value is: NO. which gives a bit a shorter name.