Giter VIP home page Giter VIP logo

javaloader's People

Contributors

dependabot[bot] avatar ecconia avatar pieter12345 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

tominous ecconia

javaloader's Issues

No java compiler available. This plugin requires a JDK to run on. Disabling plugin.

Problem

So I have been getting the error message "No java compiler available. This plugin requires a JDK to run on. Disabling plugin" when using the plugin on my server. Here is a picture of the stacktrace:
errorJL

Reason

My path variable was pointing to the wrong Java executable. The server was running on JRE. My PATH variable was pointing to JRE and JDK in the wrong order.

What fixed it

I removed the JRE from the PATH variable. This allowed it to point to the JDK

What could have helped me

Maybe the error message could include "is the server running on JRE instead of JDK?" or "you have to run the server with JDK."

P.S. @Ecconia found the reason for the stack trace.
"The project manager is not set in onEnable due to the error, which causes an NPE in onDisable."

[Feature request] Allow defining plugin dependencies by Bukkit name

Currently, depending on a plugin usually happens through:
jar -PROVIDED ./../../../myPlugin-1.0.6-SNAPSHOT.jar
When updating a plugin that is being depended on, the file name of that plugin usually changes, breaking the dependency link.

The proposal is to support:
plugin myPlugin
Which will use the Bukkit API to obtain the jar file belonging to that plugin.

Deleted projects will be unloaded as side effect

Natural behavior:

When a project is deleted from the file system, JavaLoader will remove it on command usage.
This is fine, if the intention is to unload the project.

Issue:

But if the intention is to recompile a project, it should not unload the project, as it will not be able to perform its task to recompile and enable the project again.

This becomes relevant if the project needs to be loaded most of the time.
If a mess up happens and for whatever reasons the folder does not exist anymore.
It would be fatal to disable the project.

Expected:

Recompile should only ever unload a project if it was able to successfully compile it.

[Feature request] Add flag to recompile command to allow automatic recompilation of dependents

Problem

When project A depends on project B, recompiling project B is only possible by first unloading project A manually. This becomes a larger issue if more projects depend on project B.

Proposal

  • Add a c (compile) flag argument to the recompile command that, when set, will automatically recompile direct and indirect dependents.
    When a recompile on a project (including dependents) fails, nothing should be unloaded or replaced.
  • Add a r (reload) flag argument to the recompile command that, when set, will automatically unload and load direct and indirect dependents (unload before unloading B and load after loading B).
    This could cause incompatibilities if API methods in B change, but this is the responsibility of the programmer.

These solutions allow the programmer to recompile any project with the choice to reload or recompile and reload dependents using a single command, while maintaining availability for players and without missing synchronized events.

[Feature request] Add project clean command

The /javaloader recompile [project] command automatically performs a clean (removing all generated binaries) and a build (generate new binaries). However, once binaries have been generated, there is no way to remove them through commands. Removing binaries can be useful to prevent JavaLoader to load a project until it has been recompiled.

Proposal:
Add a /javaloader clean [project] command that removes the binaries for the given project or (optionally) all projects.

[Enhancement] Send new commands to clients

Issue:

Currently when new commands are added to a project the recompile is not able to add these to the players command registry.
This leads to the players not seeing the new command and even getting an error when typing it. It however perfectly works.

Possible fix:

Whenever JavaLoader detects, that a plugin added a command or removed one, or it loads/unloads a project with commands, it should call the method syncCommands() in the class CraftServer.
This method is private and needs to be accessed via reflection.
It creates a new list of all commands and sends that list to all players and new ##players.

Expected:

When adding a command into a JavaLoader project, and recompile this project, players can right away see this command in their tabcompletion (if its conditions are met).

[Feature request] Add project enable/disable command

Proposal:
Add a /javaloader enable/disable [project] command that sets the given or (optionally) all project disabled state(s). This disabled state would prevent JavaLoader and its users from loading or recompiling the project until it has been enabled again. This disabled state should be persistent through restarts, which could happen through a .disabled file in the project directory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.