cdimascio / dotenv-java

🗝️ Dotenv is a no-dep, pure Java module that loads environment variables from a .env file
https://github.com/cdimascio/dotenv-java
Apache License 2.0
461 stars 42 forks source link

Multiline values Failed #77

Open Kingg22 opened 2 months ago

Kingg22 commented 2 months ago

Context:

What happened? Using a .env file I put my rsa key in the form JWT_PRIVATE="-----BEGIN PRIVATE KEY----- ...... -----END PRIVATE KEY-----" and the error occurs:

14:29:57.810 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed io.github.cdimascio.dotenv.DotenvException: Malformed entry

I ran with ' ', with \n and the only solution I found was to use PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" as the dotenv faq says.

I report it here since the error indicates the exception from here and not spring dotenv. Captura de pantalla 2024-09-13 144009 With \n and ' ' Captura de pantalla 2024-09-13 144044

In this you can see that when using JWT_PRIVATE as a long string it does pass and the error is the following JWT_PUBLIC Captura de pantalla 2024-09-13 144120

Attentive to your response or solution. Thanks for all.

ipalbeniz commented 1 month ago

After reviewing the tests, it seems that the only way to define a multiline value is using this format: MULTI_LINE=hello\nworld (.env).

However, there appears to be an issue in the unit test. The test expects a multiline string with escaped newlines (\\n), but it should handle actual newlines (\n) instead (BasicTests.java).

A workaround could involve defining the multiline values in the format MULTI_LINE=hello\nworld and then replacing the escaped newlines with actual newlines using .replace("\\n", "\n") in java code. In any case, it would be best to wait for a fix for this issue.