Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server doesn't start, error appears #61

Open
Cookie04DE opened this issue Nov 3, 2020 · 1 comment
Open

Server doesn't start, error appears #61

Cookie04DE opened this issue Nov 3, 2020 · 1 comment

Comments

@Cookie04DE
Copy link

Describe the bug
The server does not start and an error gets printed.
To Reproduce

  1. Run docker run -it -v ~/minecraft/config:/opt/minecraft/config -v ~/minecraft/worlds:/opt/minecraft/worlds -v ~/minecraft/plugins:/opt/minecraft/plugins -v ~/minecraft/data:/opt/minecraft/data -v ~/minecraft/logs:/opt/minecraft/logs felixklauke/paperspigot:1.16.3
  2. See error

Expected behavior
The server should start.
Error

System Info: Java 11 (OpenJDK 64-Bit Server VM 11.0.9+11) Host: Linux 4.19.0-12-amd64 (amd64)
Loading libraries, please wait...
2020-11-03 18:16:03,791 main ERROR Cannot access RandomAccessFile java.io.FileNotFoundException: logs/latest.log (Permission denied) java.io.FileNotFoundException: logs/latest.log (Permission denied)
	at java.base/java.io.RandomAccessFile.open0(Native Method)
	at java.base/java.io.RandomAccessFile.open(RandomAccessFile.java:345)
	at java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:259)
	at java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:214)
	at java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:127)
	at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory.createManager(RollingRandomAccessFileManager.java:180)
	at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory.createManager(RollingRandomAccessFileManager.java:156)
	at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
	at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
	at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.getRollingRandomAccessFileManager(RollingRandomAccessFileManager.java:87)
	at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:115)
	at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:52)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_16_R2.Main.<clinit>(Main.java:27)
	at org.bukkit.craftbukkit.Main.main(Main.java:276)

2020-11-03 18:16:03,794 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender, element RollingRandomAccessFile. java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory@480d3575] unable to create manager for [logs/latest.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager$FactoryData@f1da57d]
	at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
	at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
	at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.getRollingRandomAccessFileManager(RollingRandomAccessFileManager.java:87)
	at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:115)
	at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:52)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_16_R2.Main.<clinit>(Main.java:27)
	at org.bukkit.craftbukkit.Main.main(Main.java:276)

2020-11-03 18:16:03,797 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender for element RollingRandomAccessFile. java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_16_R2.Main.<clinit>(Main.java:27)
	at org.bukkit.craftbukkit.Main.main(Main.java:276)

2020-11-03 18:16:03,798 main ERROR Null object returned for RollingRandomAccessFile in Appenders.
2020-11-03 18:16:03,802 main ERROR Unable to locate appender "File" for logger config "root"
[18:16:06 ERROR]: Failed to load properties from file: /opt/minecraft/config/server.properties
[18:16:06 ERROR]: Failed to store properties to file: /opt/minecraft/config/server.properties
[18:16:06 WARN]: Failed to load eula.txt
[18:16:06 INFO]: [STDERR]: You have used the Spigot command line EULA agreement flag.
[18:16:06 INFO]: [STDERR]: By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula).
[18:16:06 INFO]: [STDERR]: If you do not agree to the above EULA please stop your server and remove this flag immediately.
[18:16:06 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', name='PROD'
[18:16:06 FATAL]: Failed to start the minecraft server
java.nio.file.AccessDeniedException: /opt/minecraft/worlds/world
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]
	at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]
	at java.nio.file.Files.createDirectory(Files.java:689) ~[?:?]
	at java.nio.file.Files.createAndCheckIsDirectory(Files.java:796) ~[?:?]
	at java.nio.file.Files.createDirectories(Files.java:782) ~[?:?]
	at net.minecraft.server.v1_16_R2.SessionLock.a(SourceFile:35) ~[paper.jar:git-Paper-253]
	at net.minecraft.server.v1_16_R2.Convertable$ConversionSession.<init>(Convertable.java:218) ~[paper.jar:git-Paper-253]
	at net.minecraft.server.v1_16_R2.Convertable.c(Convertable.java:200) ~[paper.jar:git-Paper-253]
	at net.minecraft.server.v1_16_R2.Main.main(Main.java:114) ~[paper.jar:git-Paper-253]
	at org.bukkit.craftbukkit.Main.main(Main.java:276) ~[paper.jar:git-Paper-253]

Desktop (please complete the following information):

  • OS: Debian
  • Version: 10
    Additional context
    I investigated the problem with a bash shell, and it seems like the /opt/minecraft folder belongs to root, so the server running under the minecraft user can't create the necessary folders. Changing the folder owner to minecraft would probably suffice to fix this issue.
@fisherthewol
Copy link
Contributor

I appreciate it's a little bit late, however:

Yeah, it will be a permission error. But not necessarily due to /opt/minecraft/* inside the container being owned by root; it'll be the difference of UID/GID between your ~/minecraft/* and whichever user is being used inside the container.

The "correct" solution (I agree you could change user inside/outside the container) is to use docker volumes: https://docs.docker.com/storage/volumes/ .
This will deal with permissions issues, until you want to extract data out of the volumes; then you just use chown -R on whatever folder you've copied it to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants