Announcement

Collapse
No announcement yet.

Klasse im Jar-File verstecken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Klasse im Jar-File verstecken

    Hallo,

    ist es möglich, in einem Jar-File nur bestimmte Klasse (oder vielleicht nur Methode) nach aussen zur Benutzung freizugeben und alle andren vor der direkten Benutzung zu verstecken. So eine Art Schnittstelle, die von ausseninstanziiert werden kann.

    Gibt es vielleich ein anderes Archiv, in dem das in dieser Form möglich ist ?

    Gruß
    riw

  • #2
    Üblicherweise nutzt man dafür ein Interface

    Eine Klasse die nicht public ist, kann nur innerhalb ihres Package angesprochen werden.

    Unter diesen beiden Voraussetzungen kannst du das realisieren
    Christian

    Comment


    • #3
      Hallo Christian,

      Danke für den Tipp. Aber ich komme noch nicht ganz mit.

      Ein kleines Beispiel:
      in meinem Jar-File befinden sich 2 Packages mit jeweils 2 Klassen.
      Im Ersten sind die Klassen A und B, im Zweiten die Klassen C und D.
      Wenn ich das Jar-File weitergebe, möchte ich, daß der Benutzer nur die Klasse A sieht und nur diese instanziieren kann.
      Was muß ich ändern, um das zu erreichen ?

      Gruß
      riw

      Comment


      • #4
        Im einfachsten Fall A,B,C,D in ein Package und nur A public machen.

        Siehe auch Designpattern Facade


        http://de.wikipedia.org/wiki/Fassade_(Entwurfsmuster)
        Zuletzt editiert von Christian Marquardt; 10.04.2009, 09:14.
        Christian

        Comment


        • #5
          Ok,

          wie mache ich das, wenn ich etwa 50 Packages mit mehreren Klassen habe und somit die Klassen nicht in ein Package verschieben will/kann.
          Ich kenne, im DotNet eine Lösung, da kann man die Klassen entsprechend deklarieren, die nach aussen veröffentlicht werden. Es wundert mich ein bisschen, daß es in Java nicht vorgesehen ist. Es erschrekt mich auch, daß jeder alle Klassen von mir ohne Sinn und Verstand benutzen kann, weil sie zugriffsmäßig nicht geschützt sind.
          Ist das wirklich wahr ? Oder übersehe ich noch eine Möglichkeit ?

          Gruß
          riw

          Comment


          • #6
            Dann sollte der Weg über die Manifestdatei gehen:

            Sealed: true
            Name: foo/bar/
            Sealed: false

            Habe das noch nicht probiert, aber

            Zeile 1 sperrt das JAR
            Zeile 2 Packagename
            Zeile 3 Gibt dieses Package frei

            Probier mal aus
            Christian

            Comment


            • #7


              Habe das ausprobiert -> funktioniert
              Zuletzt editiert von Christian Marquardt; 28.03.2010, 17:12.
              Christian

              Comment


              • #8
                super, das sieht vielversprechend aus!
                Vielen Dank !
                Ich werde es nächste Woche bei der Arbeit detalliert testen.
                Sag bitte mir noch, wie Du die Manifestdatei manipuliert hast
                und wie ich sie in NetBeans 6.5 manipulieren kann.

                Gruß
                riw

                Comment


                • #9
                  Sag bitte mir noch, wie Du die Manifestdatei manipuliert hast
                  7-Zip
                  und wie ich sie in NetBeans 6.5 manipulieren kann
                  Das wüsste ich auch gerne. Oder ihm unter Netbeans eine eigene unterschieben. Er hat partout immer eine eigene erzeugt. Jedenfalls ohne am Ant rumfummeln zu müssen..
                  Christian

                  Comment


                  • #10
                    Writing Your Own Manifest for Your JAR File
                    When you build a general Java project, a JAR file is created with a simple manifest with
                    entries for Manifest-Version, Ant-Version, and Created-By. If the project has a main
                    class designated, that main class is also designated in the JAR manifest.
                    If you have other entries that you would like to add to the manifest of a project created from
                    the Java Application Template or Java Project With Existing Sources template, you can add them
                    directly in the manifest.mf file that sits next to the build.xml file. Go the Files window and
                    double-click the the manifest.mf file's node to edit in the Source Editor.
                    You can also specify a different manifest file for the project to use. To specify a custom
                    manifest:
                    1. Open the Files window by clicking the Files tab (or by pressing Ctrl-2).
                    2. Expand the project's nbproject folder and open the
                    project.properties file.
                    3. In the manifest.file property (neu einfügen), type the manifest's name. If the manifest is
                    not in the same folder as the build.xml file, include the relative path from
                    the build.xml file.
                    NetBeans IDE Tip
                    You can write the manifest in the IDE's Source Editor using the Empty
                    File template. Open the Files window. Then right-click the project's main
                    folder and choose New | Empty File.
                    For projects created from the Java Library template, a basic manifest is generated , but no
                    editable copy of that manifest appears in the Files window. If you would like to specify a
                    different manifest for a project created from the Java Library template, simply add the
                    manifest.file property to the project's project.properties file and point it to the
                    manifest that you have created.
                    Zuletzt editiert von Christian Marquardt; 10.04.2009, 16:24.
                    Christian

                    Comment


                    • #11
                      Das funktioniert auch, allerdings muss die Manifest dann

                      Name: /
                      Sealed: true
                      Name: sichtbar/
                      Sealed: false

                      aussehen
                      Christian

                      Comment


                      • #12
                        Danke ! Danke ! Danke !
                        Das hast Du echt super gemacht !
                        Vielen Dank !
                        und
                        Frohe Ostern !!!

                        Gruß
                        riw

                        Comment

                        Working...
                        X